一、概念
1、程序执行过程中发生的不正常情况称为“异常”。
2、分为两类:
1)Error:Java虚拟机无法解决的严重问题,如JVM系统内部错误、资源耗尽等,StackOverflowError和OOM。
2)Exception:其它因编程错误或偶然的外在因素导致的一般性问题,有编译时异常和运行时异常,
编译时异常包含:IOException、ClassNotFoundException;
运行时异常包含:NullPointerException、ArrayIndexOutofBoundsException、ClassCastException、NumberFormatException、InputMismatchException;
二、try-catch-finally
1、try内写可能出现异常的代码。
2、catch捕获出现异常的代码,小类型需要放在前面,大的异常类型放在后面。
3、finally里通常放数据库连接、输入输出流、网络编程Socket等,JVM不能够自动回收,需要手动进行释放。
4、该结构是将编译时异常推迟到运行时异常显示出来。
三、throws
1、throws+异常类型
写在方法声明的后面,指明可能存在的异常类型,可以将其抛出,异常代码后续代码就不再继续执行了。
2、后续如果别的方法调用上述方法,并没有真正将异常进行处理掉,可以try-catch-finally进行处理。
注:对于方法a,它调用递进的另外几个方法,这另外几个方法是递进关系执行的,建议这另外几个方法使用throws进行抛出异常,然后方法a可以使用try-catch-finally进行处理异常。这可以避免在另外几个方法中使用try-catch-finally浪费资源,因为执行过程中另外的几个递进方法可能会发生阻滞,后续方法无法继续执行下去。
四、自定义异常类
1、继承现有的异常结构,例如RuntimeException、Exception;
2、提供全局常量:serialVersionUID;
3、提供重载的构造器;
注:throw和throws区别:
throw可以手动生成一个异常对象,并抛出;
而throws可以理解为异常处理的一种方式。通常throw抛出来异常对象,然后throws进行处理。