一. 异常是什么
异常是指阻止当前方法或作用域继续执行的问题。比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异常。
二丶异常的分类
Error(这里就强制使用 try ····catch)
表示编译时或者系统错误,如虚拟机相关的错误,OutOfMemoryError等,error是无法处理的。这里就强制使用 try ····catch
Exception ( 这里不用强制使用 try ····catch,基本上不用管直接去解决就可以了)
代码异常,Java程序员关心的基类型通常是Exception。它能被程序本身可以处理。
它可以分为RuntimeException(运行时异常)和Check-edException(可检查的异常)。
常见的RuntimeException异常:
空指针 nullPointerException
下标越界 ArrayIndexOutOfBoundsException
转型的异常 ClassCastException
算术异常 ArithmeticException
常见的 Checked Exception 异常:
操作输入流和输出流时可能出现的异常 IOException
类型转换异常类 ClassCastException
三丶异常处理
try{// 可能出错的代码
}catch(Exception e){
异常处理语句
}finaly{
最后想要输出的东西,无论如何,都会执行的代码块}
如果在try块中有多个不同类型的异常需要捕获
1.直接捕获异常父类Exception就可以了
2.多个异常依次捕获,多个catch块
2.1 多个异常依次捕获,需要注意异常的顺序问题,父类异常应该在最后处理
2.2 多个异常捕获,只会进入其中的一个异常
3.try catch都是单独的语句块
四丶异常语句块的执行顺序(try-catch-finally)
如果不发生异常,不会执行catch部分。
不管有没有发生异常,finally都会执行。
即使try和catch中有return时,finally仍然会执行
finally 是在return后面的表达式运算完后再执行的。(此时并没有返回运算后的值,而是先把要返回的值保存起来,若finally中无return,则不管 finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),该情况下函数返回值是在finally执行前确定的)