首页 > 解决方案 > 如何在java中的自定义异常类中添加条件

问题描述

我有一个类,我在几个地方调用一个自定义类来处理异常。

public class PackageFailedException extends Exception {
    public PackageFailedException(String msg) {
        super(msg)
    }
}

如果变量为真,我需要添加一个条件,然后忽略异常。有没有办法在一个地方做到这一点?例如在我的自定义类中?

提前致谢!

标签: javaexception

解决方案


您可以简单地将标志添加到您的异常中。

public class PackageFailedException extends Exception {

    private final boolean minorProblem;

    public PackageFailedException(String msg, boolean minorProblem) {
        super(msg);
        this.minorProblem = minorProblem;
    }

    public boolean isFlag() {
       return this.flag;
    }
}

然后您可以简单地调用isMinorProblem()并决定是否忽略它。这里的假设是你可以在它被抛出时传递它。

但是,如果标志指示了一个完全不同的错误情况,您可能希望完全考虑一个不同的Exception类,如果它是一个更特殊的情况,可能扩展它。PackageFailedException

 public class MinorPackageFailedException extends PackageFailedException {

     public MinorPackageFailedException(String msg) {
       super(msg);
     }
 }

然后在您的代码中:

try {
  try {
    doThePackageThing();
  } catch (MinorPackageFailedException ex) {
    //todo: you might want to log it somewhere, but we can continue 
  }

  continueWithTheRestOfTheStuff();

} catch (PackageFailedException ex) {
  //todo: this is more serious, we skip the continueWithTheRestOfTheStuff();
}

推荐阅读