[英]All RuntimeException / Un-checked exception advocates, how would you handle this scenario?
场景:
对于需要基于用户ID注册的网站,该用户ID必须是唯一的。 假设某个用户尝试使用“ foo”用户ID注册,该用户ID已经存在(使用其他必填字段)。 现在,在不使用检查异常的情况下(数据库API将抛出SQLException
进行重复插入),我想知道非检查异常的拥护者如何处理这种情况,并使用户知道已经选择了ID?
假设该网站位于Struts上(不,不,我不在一个项目上,只是因为我对它的了解更好)。 用户将填充的信息提交给Struts Action,后者调用DAO插入新记录。 因此,最终,DAO将发出INSERT语句,该语句将失败。 因此,如果Action(调用DAO)没有明确处理这种情况(DAO方法可能只声明它抛出SQLException
或方法可能捕获SQLException
并抛出诸如DuplicateUserIDExceptoion这样的扩展了Exception的业务检查异常),那么该如何处理?未经检查的异常?
底线-我阅读了许多文章,指出Java不需要检查异常,因此,希望这种情况能帮助我更好地理解它。 请不要指向我读过很多很多的文章,我真的很困惑。 您能为我提供帮助的最佳方法是为上述情况提供答案。
注意:我确实知道任何可恢复的异常情况都必须由检查异常处理(我已经在我的项目中实现了),但是,我确实对未检查异常的拥护感到困惑。 您如何处理上述情况?
提前致谢。
可以完全像检查异常一样捕获未检查的异常。 我将使用以下方法来处理这种情况:
如何开始事务,查询数据库以检查ID是否存在,如果不存在,请执行插入操作,然后提交事务? 如果确实存在,请告诉用户该ID已经存在。 更好的是,您可以对表单中的用户名字段进行模糊检查,作为ajax请求,并向他们指示已被使用。 为什么要依靠数据库异常来确定ID是否存在?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.