Java代码在运行时期发生的问题,就是异常。
在Java中,把异常信息封装成一个类。当发生问题时,就会创建异常类对象并抛出相应的异常信息(异常出现的位置和异常发生的原因等)。
异常的处理方式有两种,一种是将异常盘抛给调用者处理,而是使用try……catch……语句捕获异常进行处理。
发生异常时,若没有对异常进行处理,程序结束执行。
1、抛出异常
使用格式:
throw new 异常类名(参数);
练习throw的使用
2、声明异常
将问题声明出来,报告给调用者。如果方法通过throws抛出了编译时异常,而没有捕获处理,那么必须通过throws进行声明,让调用者去处理。
声明异常格式:
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…… {}
3、捕获异常
捕获异常格式:
try {
需要被检测的语句
} catch (异常类型 变量) {
异常的处理语句
} finally {
一定会被执行的语句
}
try:该代码块内的语句可能发生异常
catch:实现对异常的捕获,对异常进行处理
finally:无论异常是否发生都必须被执行的代码
4、异常在方法中重写细节
子类覆盖父类方法时,如果父类方法声明异常,子类只能声明父类异常或该异常的子异常或不声明。
当父类方法声明多个异常时,子类覆盖时只能声明多个异常的子集。
被覆盖的方法没有声明异常,子类覆盖时也不能声明异常。
父类方法中没有声明异常,而子类重写方法有异常,不能声明异常,只能catch捕获。处理不了的异常在catch中继续throw抛出,但只能将异常装换为RuntimeException的子类抛出。
5、异常中的常用方法
- String getMessage():返回异常的详细信息字符串,即异常的提示信息。
- void printStackTrace():在控制台输出异常的详细信息,包括异常的名称和发生异常的位置。
- String toString():返回异常名称与详细信息的字符串。