为了账号安全,请及时绑定邮箱和手机立即绑定

为什么需要创建很多不同的异常类型?

为什么需要创建很多不同的异常类型?

守着一只汪 2021-12-22 16:02:26
大多数情况下,如果我想在某个关键点终止程序的执行,我只需创建一个带有一些信息性消息的 RuntimeException:throw new RuntimeException("ERROR: this is wrong! Fix it first!")在 Java 中有许多不同的内置异常类型,并且书籍还教授如何创建自己的自定义异常类型。那真的有必要吗?从实用的角度来看,对于大多数用途来说,RuntimeException 是否足够?
查看完整描述

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不是最佳实践)


查看完整回答
反对 回复 2021-12-22
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

我强烈反对使用泛型RuntimeExceptionException. 这是为了让我们能够以不同的方式处理不同的异常。

例如,如果我捕获了一个RuntimeException,如果由于输入错误(这样我们可以告诉用户修复他们的输入)、磁盘错误(这样我们可以提醒运营团队以便他们可以替换) 或空指针(这显然是一个错误)。抛出和捕获泛型RuntimeException使这比真正需要的更困难。


查看完整回答
反对 回复 2021-12-22
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

具有不同类型异常的一种方法是,您可以定义程序应如何响应抛出的特定异常。


try {

    // code that may throw several types of exceptions

} catch (Exception1 e) {

    // handle Exception1

} catch (Exception2 e) {

    // handle Exception2

} catch ...

通过这种方式,正在运行的程序可以从异常中恢复并继续运行。


查看完整回答
反对 回复 2021-12-22
  • 3 回答
  • 0 关注
  • 227 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号