gpt4 book ai didi

java - 所有 RuntimeException/Un-checked 异常的拥护者,你们会如何处理这种情况?

转载 作者:行者123 更新时间:2023-12-01 19:04:14 25 4
gpt4 key购买 nike

场景:

对于需要根据用户 ID 注册的网站,用户 ID 必须是唯一的。假设用户尝试使用“foo”用户 ID 进行注册,该 ID 已经存在(具有其他必填字段)。现在,在不使用检查异常的情况下(数据库 API 将抛出 SQLException 进行重复插入),我想知道非检查异常的倡导者如何处理这种情况并向用户告知 id 已被选择?

假设这个网站是基于 Struts 的(不不,我不是在做一个项目,只是我更好地理解它)。用户向 Struts Action 提交填写的信息,Struts Action 调用 DAO 插入新记录。因此,最终,DAO 将发出 INSERT 语句,该语句将失败。因此,如果 Action(调用 DAO)没有显式处理这种情况(DAO 方法可能只是声明它抛出 SQLException 或方法可能捕获 SQLException 并抛出业务检查 -像 DuplicateUserIDExceptoion 这样扩展了 Exception 的异常),如何使用未经检查的异常来处理这个异常?

底线 - 我读了很多文章,指出 Java 不需要检查异常,因此,我希望这个场景将帮助我更好地理解它。请不要指向文章,因为我读过很多很多,我真的很困惑。您可以帮助我的最好方法是提供上述场景的答案。

注意:我确实明白任何可恢复的异常场景都必须由检查异常(我一直在我的项目中实现)来处理,但是,我真的对仅检查异常的倡导者感到困惑。你们如何处理上述情况?

提前致谢。

最佳答案

未检查的异常可以像检查的异常一样被捕获。我将使用以下方法来处理这种情况:

  1. 检查用户 ID 是否已存在。如果是这样,则抛出一个已检查的 DuplicateUserIdException。我认为检查异常在这里更有意义。但是您也可以将异常设置为运行时异常,并在表示层中捕获它,就像捕获已检查的异常一样
  2. 插入用户。如果发生 SQLException,则根本不容易确定它是否是由于已存在的用户 ID 引起的。另外,如果推迟的话,可以在提交时检查约束。此异常仅在两个线程之间存在竞争条件的情况下才会发生,因此应该很少发生。因此,我会将其视为技术运行时异常并显示一般错误消息。

关于java - 所有 RuntimeException/Un-checked 异常的拥护者,你们会如何处理这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com