【问题标题】:Should user input cause checked exceptions?用户输入是否应该导致检查异常?
【发布时间】:2015-08-18 22:41:46
【问题描述】:

我有一个执行插入数据库的操作/方法。它需要几个字段,并且由于各种原因,操作可能会失败,因为一个或多个输入不是唯一的,或者因为它们与一些需要唯一的内部记录冲突。

saveUserInfo(primaryToken,secondaryToken,userid);

在每次违规时抛出一个检查异常对我来说有意义吗?

我的想法是使用以下内容:

saveUserInfo(String primaryToken, String secondaryToken, String id) 
throws PrimaryTokenTakenException,SecondaryTokenTakenException

通过将网络用户路由到请求新令牌的页面来强制调用此方法的任何开发人员处理它。

反对 这种方法的反对者指出,我们开发团队知道会导致此方法失败的每种错误情况,而是应该返回错误代码并使用它来处理每种情况。

int errorCode = saveUserInfo(primaryToken,secondaryToken,userid);

我认为检查方法没有任何明显的缺点。这些错误情况很可能发生,您绝对必须在使用 saveUserInfo() 的任何地方解决它们。似乎正是为这种情况创建了检查异常。

【问题讨论】:

  • 预期的异常不是很异常吗?
  • @JarrodRoberson 我会将您投反对票且极具建设性的文章视为运行时例外。

标签: java exception-handling checked-exceptions


【解决方案1】:

只要您的程序能够检测到这些情况并从这些情况中正确恢复,使用已检查的异常处理无效的用户输入当然是一种有效且合理的方法。已检查异常仅意味着您的程序接口需要建立并遵循关于处理程序逻辑错误的协定,而未检查(运行时)异常是以您的程序无法在运行时安全地从中恢复的方式发生的异常。您处理异常的方法可能取决于您的开发团队的理念,但检查与未检查的情况仍然存在——您知道如何检测并合理地从无效输入中恢复,所以您应该有义务为此做点什么。

有关指南,请参阅this page re: Java 中的异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多