孤尽训练营打卡日记day05--异常初识

背景:

        异常处理是Java 开发中的一个重要部分。它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java提供了几个异常处理特性,以try,catch 和 finally 关键字的形式内建于语言自身之中。Java 编程语言也允许你创建新的异常,并通过使用 throw 和 throws关键字抛出它们。

Java 的异常机制

异常就是一个需要被明确感知的危险信号

好的异常机制

  • 异常应当描述导致当前异常发生的原因
  • 根据异常栈快速定位到异常发生的位置
  • 结合异常描述和异常栈解决异常 

坏的异常机制

  • 代码可读性差
  • 无法根据异常解决问题

Java异常处理流程

 

Java异常体系

异常处理设计与实践

异常抛出和捕获的原则

  • 非必要不使用异常,稳定的代码不应该放入try catch 块

try{}里面的代码越少越好,为什么?

因为jvm在处理异常代码的时候,需要对其进行特殊的处理,这一个时候需要给它分配一些资源来管理这一个异常代码,那么你放置的代码越多,需要的资源就会越多。

  • 使用描述性信息抛出异常
  • 力所能及的异常一定要处理 
  • 异常忽略要有理有据

try...catch...finally 流程解析

 

JDK7 资源关闭之 try with resource流程解析

特殊NPE场景及其处理对策:

使用 Optional 优雅的防止 NPE

Optional的巧用

异常处理

  • 为可恢复的错误使用检查型异常,为编程错误使用非检查型错误
  • 在finally程序块中关闭或者释放资源        
  • 在堆栈跟踪中包含引起异常的原因
  • 始终提供关于异常的有意义的完整的信息
  • 避免过度使用检查型异常
  • 将检查型异常转为运行时异常
  • 记住对性能而言,异常代价高昂
  • 避免catch块为空
  • 使用标准异常
  • 记录任何方法抛出的异常

你总是这样轻言放弃的话,无论多久都只会原地踏步。--《哆啦A梦》

 参考文献:

Joel老师的ppt

Java 编程中关于异常处理的 10 个最佳实践

猜你喜欢

转载自blog.csdn.net/qq_35056844/article/details/121055626