Java进阶之异常

Java进阶之异常

Java进阶之异常

异常类型

  • 运行时异常
    • 编写代码时没有任何不正常现象,但是运行期间就会出现异常
  • 编译时异常(检查性异常)

不正常现象的分支体系

  • 错误Error
    • 必须解决的,如果不解决程序必然无法继续执行
    • StackOverflowError:栈内存溢出错误
    • OutOfMemoryError: 堆内存溢出错误
  • 异常Exception
    • 认为规定的一种不正常异常,就算是出异常,程序也能继续运行
    • ArrayIndexOutBoundsExceptio 数组索引越界异常,数组的索引超过了最大的允许范围
    • StringIndexOutBoundsException 字符串索引越界异常
    • NullPointerException: 空指针异常,对象为null,还要调用其他的属性或方法
    • ClassCastException:类的造型异常,造型时,要进行造型的类型和实际类型不相符
    • NumberFormatException: 数字格式化异常,通过数字转换方法进行转换时,要转换的元素不是数字类
    • 查找异常
      • 点出错信息
      • 追踪值得来源
      • 调试模式

异常的继承结构

  • 异常的顶级父类 Exception
  • 检查性异常 Exception
  • 运行时异常 RuntimeException

如何在程序中避免因为异常导致程序中断

  • 异常出现后会导致其后执行的程序全部中断
  • 添加校验机制-取决于要面对的异常
    • 因为一些不可预知问题导致的程序异常需要对问题本身加入一些有效性验证
    • 对关键性问题节点加入有效性验证
    • try...catch...finally来保证计算在任何不可预知的情况下出现异常,也不会导致整个系统中断,只中断try中的后续访问
      • try...catch...finally不是从根本上解决了异常,而是,当异常产生的时候,为了防止系统中断,降低异常出现后的影响
      • 当try语句中,出现多种不同的异常的时候,同一时间,最多只能产生一个异常
      • 如果try中产生了未在catch中捕获的异常,程序依旧会中断运行
      • 可以通过多个catch语句块对程序的异常进行捕获,保证任何异常都不会中断程序,catch可以无限数量。
      • finally,无论try有无异常,或因为异常去掉了catch,finally都会执行

你可能感兴趣的:(Java进阶之异常)