【发布时间】:2012-05-30 17:03:23
【问题描述】:
场景:
对于需要根据用户 ID 进行注册的网站,用户 ID 必须是唯一的。假设用户尝试使用“foo”用户 ID 注册,该用户 ID 已经存在(带有其他必填字段)。现在,不使用受检异常(数据库 API 将抛出 SQLException 重复插入),我想知道未受检异常的拥护者如何处理这种情况并告知用户 id 已被选择?
假设这个网站是在 Struts 上的(不不,我不是在做一个项目,只是我更了解它)。用户将填写的信息提交给调用 DAO 插入新记录的 Struts Action。因此,最终,DAO 将发出 INSERT 语句,该语句将失败。因此,如果 Action(调用 DAO)没有显式处理这种情况(DAO 方法可能只是声明它抛出 SQLException 或方法可能会捕获 SQLException 并抛出一个业务检查异常,例如扩展异常的 DuplicateUserIDExceptoion),怎么能这会用未经检查的异常处理吗?
底线 - 我读了很多文章,说明 Java 不需要检查异常,所以,我希望这个场景能帮助我更好地理解它。请不要指向文章,因为我已经阅读了很多很多,我真的很困惑。您可以帮助我的最佳方式是提供上述方案的答案。
注意:我确实理解任何可恢复的异常情况都必须由已检查异常(我一直在我的项目中实现)处理,但是,我真的被未检查异常的拥护者弄糊涂了。你们是如何处理上述情况的?
提前致谢。
【问题讨论】:
标签: java exception-handling runtimeexception unchecked