在 Java 中抛出异常总是会停止该方法的执行。它返回到调用该方法的任何代码段,但有异常。如果该代码捕获到异常,它会转到 catch 块,否则,它会进一步向上抛出异常。
也许您正在寻找一种将异常附加到日志的方法?记录器有一个方法:
logger.log(Level.INFO,message,new UserAtWrongPlaceException(message));
当然,你可以抛出一个随机异常,但如果你想让方法继续,你必须抓住它:
try {
if(response.check() == checkNumber) {
String message = "You are looking at Wrong Place";
logger.log(message);
throw new UserAtWrongPlaceException(message);
}
} catch(UserAtWrongPlaceException e) {
//Do something with the exception, or just ignore it.
}
但是,当然,您最好不要抛出异常,因为结果将是相同的,并且实例化异常只会减慢它的速度。
也许您正在寻找一种方法来继续该方法,但在最后抛出异常而不是成功返回。对于这种做法,我会将异常存储起来以备后用(尽管确实很复杂)。像这样:
UserAtWrongPlaceException exception = null;
if(response.check() == checkNumber) {
String message = "You are looking at Wrong Place";
logger.log(message);
exception = new UserAtWrongPlaceException(message);
}
...
if(response.check() == somethingElse) { ... }
...
if(exception != null) {
throw exception;
}
return true;
但是,如果您选择该模式,则必须查看如果多个这些 if 引发异常会发生什么。在上面的代码片段中,这将导致记录所有异常,但只抛出最后一个异常。
请记住,方法可以返回或抛出异常。它不能两者都做,也不能抛出多个异常。