我有一个执行插入数据库的操作/方法。它需要几个字段,并且由于各种原因操作可能会失败,因为一个或多个输入不是唯一的,或者因为它们与一些需要唯一的内部记录冲突。
saveUserInfo(primaryToken,secondaryToken,userid);
我是否有理由在每次违规时抛出一个检查过的异常?
我的想法是使用以下内容:
saveUserInfo(String primaryToken, String secondaryToken, String id)
throws PrimaryTokenTakenException,SecondaryTokenTakenException
强制任何调用此方法的开发人员通过将Web用户路由到请求新令牌的页面来处理它。
对立 这种方法的反对者指出,我们(开发团队)知道会导致此失败的每个错误情况,而应该返回错误代码并使用它来处理每个案例。
int errorCode = saveUserInfo(primaryToken,secondaryToken,userid);
我没有看到检查方法有任何明显的缺点。这些错误情况很可能发生,您绝对必须在使用saveUserInfo()的任何地方解决它们。看起来确实是为特定情况创建的例外情况。
答案 0 :(得分:0)
使用已检查的异常来处理无效的用户输入肯定是一种有效且合理的方法,只要您的程序能够检测并从这些情况中正确恢复即可。检查异常只是意味着您的程序接口需要建立并遵循有关处理程序逻辑错误的合同,而未检查(运行时)异常是以您的程序无法在运行时安全地从它们中恢复的方式发生的异常。处理异常的方法可能取决于您的开发团队的理念,但是已检查的vs未经检查的情况仍然存在 - 您知道如何检测并合理地从无效输入中恢复,因此您应该有义务对此采取行动。
有关指南,请参阅Java中的this page re:例外。