JAVA异常机制总结
一.关于异常的基本概念
1.异常与异常处理机制:
异常: JAVA语言中,异常即指导致程序非正常结束(即中断)的指令流
异常处理机制:若没有异常处理语句,就必须使用大量的判断语句,配合所想到的错误状况来捕捉这些错误,将导致程序效率降低。异常处理机制即避免了这种缺点,又能很好的处理和捕获异常,增进程序稳定性和效率性。
2.异常的分类:
Throwable 是所有 Java 程序中错误处理的父类 ,有两个子类: Error 和 Exception
Error :一般指JVM错误,程序中无法处理
Exception :可以被捕获和处理,可以大致分为 运行时异常-------强制异常
运行时异常( runtime exception),出现此种异常可以不处理。
常见有:数组下标越界 ArrayIndexOutOfBoundsException
类型转换异常 ClassCastException
空指针 NullPointerException 。。。。。。
强制异常(runtime exception , checked exception ), 对于这种异常, JAVA 编译器强制要求我们必需对出现的这些异常进行 catch 。面对这种异常不管我们是否愿意,只能自己去写一大堆catch 块去处理可能的异常。
常见有:文件不存在 UnsupportedOperationException
参数为负数 IllegalArgumentException
算术错误 ArithmeticException。。。。。。
三.异常信息的分析与程序调试
1) 通过大量的System.out.println语句插入到程序中,输出变量值或其他信息,供程序员判断程序
并找到异常出错的地方进行改正,即利用异常处理机制进行异常捕获。
2)执行步骤:
a.根据异常类名,在JDK中进行查询确定异常的类型
b.找到出错的位置,根据提示信息,找到第一个与自己定义的类名相同的行,即确定异常出现的位置
c.分析代码,在异常出现的上一行输出变量值等。
d.修改代码,处理异常
四.处理异常的方法
1)捕获处理异常
具体用法如下:
try{
出现异常的代码;
}catch (属于异常的种类){
处理异常的语句
}
finally{ 异常的统一出口
}
注:此种方式可以用来捕捉单个异常,若要处理多个异常,可以使用多个catch语句,或者为节省语句在catch的方法体中写多个执行语句。但此时,只可能发生一种异常,因为在try语句中一旦捕获到异常语句就停止以下的造操作。
2)抛出异常
a. throws 关键字--------定义方法时用throws声明表示不处理异常,而交给方法的调用处进行处理,使用格式如下:
public 返回值类型 方法名称(参数列表)throws 异常类{
}
注:若出现以下情况,程序中主方法中可以不使用try...catch进行异常捕获与处理,但轻易不要这样使用
public class Student{
public static void main(String args[])throws Exception{
Student student =new Student() ;
student.方法名();}
b.throw关键字-----------使用throw关键字人为的抛出一个异常,直接抛出异常类的实例化对象即可。
public class ThrowDemo{
public static void main(String args[]){
try{
throw new Exception("自己抛出的异常!");
}catch (Exception e){
System.out.println(e);
}
}
}
运行结果:java.lang.Exception:自己抛出的异常!
五.实际使用时注意
异常不需要一味处理或完全不管不顾就往外抛,通常情况下,身为程序员开发程序写软件时,就必须使用try...catch语句处理异常,而在写第三方插件时,就往外抛,谁来使用就谁来处理。