Вы можете просто добавить флаг в свое исключение.
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();
}