Java 使用检查异常处理web层中要处理的错误

Java 使用检查异常处理web层中要处理的错误,java,spring,spring-mvc,jakarta-ee,exception,Java,Spring,Spring Mvc,Jakarta Ee,Exception,我很难组织如何处理服务层中发生的错误。在该方法中引发该异常的原因是提供的密码太弱或确认id错误。不过,例外情况的名称尚未确定 但是,在新应用程序中是否仍要避免检查异常?如果是这样,我如何向调用者传达这样的错误?此场景中的调用方是公开web服务的web层。我想处理web层中的错误并创建一条错误消息 我有一个方法: boolean confirmPasswordReset(int accountId, String confirmationId, String newPassword) throws

我很难组织如何处理服务层中发生的错误。在该方法中引发该异常的原因是提供的密码太弱或确认id错误。不过,例外情况的名称尚未确定

但是,在新应用程序中是否仍要避免检查异常?如果是这样,我如何向调用者传达这样的错误?此场景中的调用方是公开web服务的web层。我想处理web层中的错误并创建一条错误消息

我有一个方法:

boolean confirmPasswordReset(int accountId, String confirmationId, String newPassword) throws ConstraintViolation;
这是异常类:

public class ConstraintViolation extends Exception {

    public ConstraintViolation(String message) {
        super(message);
    }
}
从阅读本文来看,它似乎应该是正确的:

偶然事件

  • 被认为是:设计的一部分
  • 预计会发生:定期但很少
  • 谁关心它:调用方法的上游代码示例:可选返回模式
  • 最佳映射:选中的异常

我尽量少使用检查异常。我认为使用运行时异常并清楚地记录它就足够了

从您的案例来看,您似乎是设计和控制web层的人。在这种情况下,您已经知道服务层抛出的运行时异常以及如何处理它们。编译器不需要告诉您


只有当异常是可恢复的,并且代码的客户端是外部的,我必须强制它处理异常时,我才会使用选中的异常。即使如此,结果很可能是多了一个空的catch块

在这里,您可以很好地讨论这两种方法的优缺点。

我认为重要的是(与上面文章的作者类似)你要选择走哪条路(检查或不检查),然后保持一致。否则,您将得到一个混乱的代码库,并且可能会受到这两种方法的不利影响