java中的异常根据是否需要人为处理分为俩种:
A:非受查异常:派生于Error类,与RuntimeException类(运行时异常)的所有异常。
B:受查异常----:所有不属于非受查异常类的异常(包括自己写的继承于Exception类的子类)。
非受查异常,顾名思义,就是不需要强制处理的异常。
受查异常:需要人为处理它,去检查它是否真正正确运行,如果正确运行,不进行干预,如果与预期运行相违背,则处理异常。
受查异常的处理有俩种方式:
一.使用try catch块处理:
语法:
try{
有可能出现异常的语句 ;
}catch (异常类 对象) {
}
finally {
异常的出口
}
try块里如果被程序执行的语句有错误,
就进入catch块 -> 去处理错误
而finally块不论是否进入catch,都会被执行。
他们之间可以有以下组合
try catch
try{
//可能出错的语句
}catch(异常类 对象){
//具体处理细节
}
try finally
try{
有可能出现异常的语句 ;
}finally {
异常的出口
}
try catch finally
try{
有可能出现异常的语句 ;
}catch (异常类 对象) {
//具体处理细节
} finally {
异常的出口
}
举例:
//如果try块的里的代码没有问题,就不会进入catch块,打印信息会是“i的值为X”
//可是i = 5 / 0; 明显会有错误,所以程序进入了catch块并且顺序执行,
//catch中的最后一句return结束了main(),程序结束。
public class Test {
public static void main(String[] args) {
int i = 0;
try {
i = 5 / 0;
} catch(Exception e) {
System.out.println("除数不能为0哦!!!");
e.printStackTrace(System.out);
return;
}
System.out.println("i的值为:"+ i);
}
}
//输出结果:除数不能为0哦!!!
//大家不妨在自己的编译器里试一试,切实感受一下