异常:运行期出现的错误。
异常机制:遇到异常事件时,会生成一个封装了异常信息的异常类对象,并提交给运行时系统自动打印出来。【练习1】
分类 Throwable Error 程序处理不了的错误
Exception RuntimeException 经常出的错误,出异常时catch不出不用catch 。代码本身有问题。数组越界 【练习2】
Others 出不出都要显式catch。凡是带throws的类都是这种异常。 代码本身没问题,只是代码有潜在出问题的风险。I/O
finally 无论如何这里的代码都会执行;当try中语句一报错被捕获异常之后 语句二不会被执行了,但是finally中的 内容最后都会执行。
当try中有return时,在return的时候把值存在内存栈中,等finally执行完了再返回(return先执行 finally先输出);如果finally中有return,那么直接返回,不会再回头执行任何语句
如果当前方法处理不了异常,throws给上级部门;当你调用我这个方法时应该catch住我这个异常或者继续抛出去;如果mian方法也往外抛就抛搭到运行时系统,会打印出堆栈信息。【练习4】
catch住的异常一定要处理
throw new异常对象 前面要有throws
捕捉范围不能抓大放小,只能先小后大。
自定义异常:继承Exception 或者RuntimeException【练习5】
重写方法不能抛出比父类方法大的异常或者不抛出异常【练习6】
--------------------------------------
练习1: 捕获一个数组越界错误并且输出错误提示,打印堆栈信息。
练习2:捕获一个RuntimeException。ArithmeticException;捕获一个Exception。FileNotFoundException;比较区别。
练习3:向上抛出异常。
练习4:自定义异常(登记人数)。
练习5:验证重写异常。