3 回答

TA贡献2012条经验 获得超12个赞
大多数时候,如果我想在某个临界点终止程序的执行
大多数时候我不想终止我的应用程序,但我想从异常中恢复以继续执行。
通常,您不必定义自己的异常,因为您可以(技术上)仅使用例如。Exception和RuntimeException而创建自己的异常类allowes您精确graing这种异常醒目。例如
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不是最佳实践)

TA贡献1812条经验 获得超5个赞
我强烈反对使用泛型RuntimeException
和Exception
. 这是为了让我们能够以不同的方式处理不同的异常。
例如,如果我捕获了一个RuntimeException
,如果由于输入错误(这样我们可以告诉用户修复他们的输入)、磁盘错误(这样我们可以提醒运营团队以便他们可以替换) 或空指针(这显然是一个错误)。抛出和捕获泛型RuntimeException
使这比真正需要的更困难。

TA贡献1911条经验 获得超7个赞
具有不同类型异常的一种方法是,您可以定义程序应如何响应抛出的特定异常。
try {
// code that may throw several types of exceptions
} catch (Exception1 e) {
// handle Exception1
} catch (Exception2 e) {
// handle Exception2
} catch ...
通过这种方式,正在运行的程序可以从异常中恢复并继续运行。
添加回答
举报