throw new exception 后程序未中断_Java异常Exception-checked、unchecked

Java 异常分类

0212fab939e32c53e1aedf3ba59e8a0e.png

Throwable类有两个直接子类:

  • Exception:出现的问题是可以被捕获的;
  • Error:系统错误,通常由JVM处理。

可捕获的异常又可以分为两类:

(1)checked异常: 直接派生自Exception的异常类,必须被捕获或再次声明抛出。

  • 无能为力、引起注意型 --- 如SQLException(字段超长),只需要保存异常线程,人工介入解决。
  • 可以处置型 --- 如发生未授权异常(UnAuthorizedException),可以跳转至权限申请页面。

(2)unchecked异常( RuntimeException):派生自RuntimeException的异常类。使用throw语句可以随时抛出这种异常对象。

throw new ArithmeticException(…);

  • 可预测异常(Predicted Exception)--- 如IndexOutOfBoundsException、NullPointerException,应该提前做好边界检查、空指针判断。
  • 需捕捉异常(Caution Exception) --- 如DubboTimeoutException,客户端必须显式处理,可以重试或者降级处理等等。
  • 可透出异常(Ignored Exception)--- 框架或系统产生的,且会自行处理,而程序无须关心。
22ec593890793a4cb90943d06b6dd0dc.png
230cada2fcf5c39d77fbee37df3eae50.png

异常抛出设计:

  • 对外提供的开发接口,建议使用错误码;
  • 公司内部跨应用远程服务调用,优先考虑使用Result 对象来封装错误码、错误描述信息;
  • 应用内部,则推荐直接抛出异常对象;

防止NPE(NullPointerException),一定是调用方的责任,需要调用方进行事先判断。

两个关键字 throw 和throws 的区别

throw new Exception(...);

  • throw -- 在方法内部抛出具体异常类对象的关键字;
  • throws -- 用在方法signature 上,表示方法调用者可以此方法声明向上抛出异常对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值