异常是程序中出现的错误,程序出现不正常的情况
1.异常的体系:
Throwable (1) --Error 严重的问题,不做处理
(2)–Exception a、RuntimeException:运行期异常,需要我们自己修正代码 可以处理也可以不处理 b、非RuntimeException :编译期异常,必须处理,否则程序编译不通过
2.异常的处理:
(1)JVM默认处理:把异常的名称、原因、位置等信息输出在控制台,并且程序停止执行。
(2)自己处理:a:通过try…catch…finally 捕捉错误,然后编写处理代码,可以让后面的代码程序可以继续执行。b: throws 如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部,告诉调用者这里有问题。
try…catch多重捕获:
一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。
如:
finally关键字:
finally 关键字用来创建在 try 代码块后面执行的代码块。无论是否发生异常,finally 代码块中的代码总会被执行。
在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。
throw和throws的区别:
throw:在方法体中,后面跟的是异常的对象名,并且只能是一个,throw抛出的是一个异常对象,说明肯定有异常产生
throws:在方法声明上,后面跟的是异常的类名,可以是多个,throws是声明方法异常,是一种可能性,异常不一定产生
3、自定义异常
继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可
4、异常的注意实现
(1)父方法有异常抛出,子重写方法在抛出异常时必须要小于等于父的异常
(2)父的方法没有抛出异常,子重写方法不能有异常抛出
父方法抛出多个异常,子重写方法必须比父方法少