异常1(Exception)
父类 :Throwable(可抛出的)
有两个子类:Error(错误) Exception(异常)
Error是所有错误类的父类,Exception是所有异常类的父类。
如图所示:
格式:
Try{
需要被检测的代码块;
}catch(异常类 变量名){
异常处理代码;
}finally{
一定要执行的语句块;
}
Try.....catch.....finally运行顺序:
1、当try块中没有异常的时候,try块运行完之后跳过catch块,最后运行finally
2、当try块中发现异常的时候,try块运行到异常的语句,直接跳到catch块中,最后最后运行finally
3、如果一个try块和多个catch块联用,在异常发生时,只会执行第一个和异常对象匹配的catch块,其余的catch块全部忽略。
4、在try块和catch块中,有return语句,finally语句块也会在方法返回之前被执行。
5、虚拟机关闭时,System.exit(0);finally块不会执行。
特殊情况:try对应多个catch时,如果有父类的语句块,一定要放在最下面
异常分为:
1、编译期异常(检查异常):开发者必须处理,否则无法通过编译(强制用try...catch)
2、运行期异常(非检查异常):开发者可以处理,也可以不处理,即使不处理也可以通过编译。(不强制,发现错误改正,不用try...catch)
常见的异常(所有的运行期异常都是RuntimeException的子类):
1、ArithmeticException 算术异常,在执行数学运算时,进行了非法操作时抛出(除零)
2、ArrayIndexOutofBoundsException 数组下标越界异常,在访问数组元素时,使用了非法的下标(负数,大于或等于数组长度)抛出。
3、ClassCastException 类型转换异常,当大类型强转为小类型时,小类型的变量无法引用大类型变量所指向对象时抛出。
4、NullPointerException 空指针异常,当对null值调用属性或方法时抛出。
5、NumberFormatException 数字转换异常,将字符串转化为数字类型时,字符串不是合法的数字格式时抛出。
6、Java.Util.regex.patter nSyntaException 正则表达式格式异常。当运用正则表达式验证时,正则表达式书写错误时抛出。
7、Java.Io.FileNotFoundException 操作文件流时,目标文件不存在时抛出
8、Java.io.NotSerializableException 在通过对象流传输对象时,对象没有实现序列化接口时抛出。
9、Throw new Exception();创建异常对象,并抛出。
10、Java.lang,ClassNotFoundException 加载类时,指定路径的类不存在时抛出。