大多数时候,如果我想在某个关键时刻终止程序的执行,我只是创建带有一些参考消息的RuntimeException:
throw new RuntimeException("ERROR: this is wrong! Fix it first!")
在Java中,有许多不同的内置异常类型,并且书籍还教您如何创建自己的自定义异常类型。那真的有必要吗?从实用的角度来看,RuntimeException是否足以满足大多数目的?
答案 0 :(得分:2)
大多数时候,如果我想在某个关键时刻终止程序的执行
大多数时候,我不想终止我的应用程序,但我想从异常中恢复以继续执行。
通常,您不必定义自己的异常,因为您可以(技术上)仅使用eg。 Exception
和RuntimeException
,但是创建自己的异常类使您可以很好地捕获此类异常。例如
try{
myService.doSomething();
}catch(MyCustomException){
//handle custom exception here- eg.
retunr Constants.DEFAULT_RESPONSE;
}catch(RuntimeException e){
log.error("Unknown Error",e);
return null;
}
因此在这种情况下,我允许自己从服务方法引发的异常中恢复,但同时我登录所有其他异常(返回null
从来都不是最佳实践)
答案 1 :(得分:1)
我强烈不建议使用通用RuntimeException
和Exception
。这是为了使我们能够以不同的方式处理不同的异常。
例如,如果我遇到一个RuntimeException
,如果是由于输入错误(我可以告诉用户修复他们的输入),磁盘错误(因此我们可以警告操作团队以便他们可以替换)或空指针(这显然是一个错误)。抛出和捕获通用RuntimeException
使得这比实际需要的困难。
答案 2 :(得分:0)
具有不同类型的异常的一种有用方法是,您可以定义程序应如何响应抛出的特定异常。
try {
// code that may throw several types of exceptions
} catch (Exception1 e) {
// handle Exception1
} catch (Exception2 e) {
// handle Exception2
} catch ...
通过这种方式,正在运行的程序可以从异常中恢复并可以继续运行。