1 异常的定义
在java中,组织当前当前方法或作用域的情况,称之为异常。
编译器异常:最具有代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件夹时,一个异常就发生了,这些异常在编译时不能被简单的忽略。
运行期异常:运行期异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误:错误是脱离程序员控制的问题,错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译期也检查不到的。
1.1异常的分类
1.1.1 运行期异常
由系统检测,用户的Java程序中可以不做处理,系统将他们交给缺省的异常处理程序
1.1.2 编译器异常
在程序中必须对其进行处理,否则编译器会指出错误。
2 异常的继承结构
1)Java中所有不正常类都继承于Throwable类。主要包含Error类和Exception类;
2)Error类包括虚拟机错误和线程死锁,一旦出现,程序就彻底挂了。
3)Exception类,就是通常说的“异常”。
4)RuntimeException主要包括四种异常
1.算术异常
2.类型转换异常
3.数组下标越界
3.空指针异常
3 异常处理机制
3.1异常的捕获
try代码块
所有可能抛出异常的语句都放入try块中。
catch(必有)代码块
用于处理try块中所有生成异常的事件,当捕获一个异常时剩下的catch语句就不再进行匹配。
finall(可选)
无论是否发生异常finally代码块中的代码都会被执行。
异常捕获示例演示
3.2 抛异常
throws/throw关键字
1)一个方法不处理它产生的异常,而是沿着调用层次向上传递,由调用它的方法来处理这些异常,叫声明抛出异常(throws)。
2)抛出异常就是产生异常对象的过程,首先要生成异常对象,异常或者由虚拟机生成,或者由某些类的实力生成,也可以在程序中生成。
3)可以抛出的异常必须是throwable的子类