异常处理小总结

异常概述

异常:在java语言中,将程序执行中发生的不正常情况称为“异常”。(开发中的语法错误和逻辑错误不是异常)

Error

java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:*Error (栈溢出)和 OutOfMemoryError(堆溢出)。一般不编写针对性的代码进行处理。

Exception

其他因编程错误或偶然的外因导致的一般性问题,可以使用针对性代码进行处理,如:

  1. 空指针访问
  2. 试图读取不存在的文件
  3. 网络连接中断
  4. 数组角标越界

异常体系结构

运行时异常

运行时异常:是指编译器不要求强制处理的异常。一般是指编程时的逻辑错误,是程序员应该积极避免其出现的异常。java.lang.RuntimeException类及其它的子类都是运行时异常。对于这类异常,可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响。

编译时异常

编译时异常:是指编译器要求必须处置的异常。即程序在运行时由于外因造成的一般性异常。编译器要求java程序必须捕获或声明所有的编译时异常。对于这类异常,如果程序不处理,可能会带来意想不到的结果。

异常结构

红色:编译时异常(受检异常)
蓝色:运行时异常(非受检异常)
异常处理小总结

异常处理小总结

异常处理小总结

异常处理机制

异常处理小总结
异常处理小总结

try-catch-finally

语法:

异常处理小总结
注意:

  1. finally是可选的,且finally中的代码一定会执行
  2. 在try结构中声明的变量,在出了try结构以后,就不能被调用了
  3. catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓
  4. catch中的异常类型如果满足子父类关系,则要求子类声明一定在父类上面。否则报错。

捕获异常的有关信息

异常处理小总结

throws + 异常类型

异常处理小总结
注意:

  1. 方法重写时,子类重写的方法抛出的异常类型 不大于 父类被重写的方法抛出的异常类型
  2. throws 后可以加多个异常类型
  3. 当出现异常,会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会抛出。异常代码后续的代码就不会再执行。

如何选择异常处理方式

异常处理小总结

手动抛出异常对象

异常处理小总结

自定义异常类

异常处理小总结
异常处理小总结
注意:当自定义异常类继承RuntimeException 时,手动抛出后,可以不用throws 进行处理;当自定义异常类继承Exception 时,手动抛出后,必须用throws 进行处理。(这种手动生成异常,一般不用try-catch处理)