百木园-与人分享,
就是让自己快乐。

JAVA 异常 基本知识

异常

异常定义

异常是运行过程中出现的错误

  • 人为错误:填写错误等
  • 随机错误:网络中断、内存耗尽等

一个健壮的程序必须处理各种各样的错误

Java的异常是class

  • Object

    • Throwable

      • Error

        • OutOfMemoryError
      • Exception

        • RuntimeException

          • NullPoiterException
          • IllegalArgumentException
        • IOException

    • 继承关系图

捕获要求

  • Error 及其子类,RuntimeException及其子类不需要捕获
  • Exception及其子类,不包括RuntimeException及其子类
    必须捕获

异常捕获

try、catch、finally

  • try中一般放置可能发生异常的语句

  • catch 捕获异常

    • 多catch则按顺序匹配

      • 匹配到了则不再继续匹配
    • 可以捕获子类异常

    • 一个catch可以捕获多个异常,用”|“合并到一起

  • finally

    • 不论是否发生异常都会执行的代码
    • 不是必须的
    • 总是最后执行

抛出异常

异常的传播

  • 追踪

    • printStackTrace()方法可以打印出调用堆栈

异常的转换

  • 抛出过程中转换了异常类型

    • 用旧异常构建了一个新异常然后抛出
      printStackTrace的时候 关键字为Caused by

try、catch、filnally

  • 一般正常情况,再try中抛出异常,catch捕获异常,final运行保底代码

  • 如果catch中抛出的异常,会在final运行完毕后抛出

  • 异常屏蔽,如果final也抛出异常,将会屏蔽掉catch中的异常

    • 解决方法,使用Trrowable的
      addSupressed()方法。保留被屏蔽的异常信息。
      在捕获处是同getSuppressed()方法获取被屏蔽的异常信息
      printStackTrace的时候 关键字为Suppressed

NullPointerException

最常见的异常

空指针异常

由JVM抛出

如果一个对象为null,调用其方法或访问其字段就会产生

一般避免返回null

  • 字符串使用”“,而不是null
  • 数组返回空数组,而不是null

如果调用方一定要根据null判断,比如返回null表示文件不存在,那么考虑返回Optional

从Java 14开始,如果产生了NullPointerException,JVM可以给出详细的信息告诉我们null对象到底是谁。

小结

自定义异常

在一个大型项目中,可以自定义新的异常类型,但是,保持一个合理的异常继承体系是非常重要的。

一个常见的做法是自定义一个BaseException作为“根异常”,然后,派生出各种业务类型的异常。

完整思维导图

参考

www.liaoxuefeng.com


来源:https://www.cnblogs.com/lyphy/p/16290265.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » JAVA 异常 基本知识

相关推荐

  • 暂无文章