异常处理
1、try{} 语句块
试一试,里面放可能发生异常的语句块。当发生异常的时候,try语句块中发生异常后发生异常那行代码后面的代码是不会执行的直接跳转到catch语句块。
2、catch(){};语句块
捕捉异常
异常对象引用.printStackTrace():打印出异常的类型、性质、栈层次已经出现在程序中的位置。
异常对象引用.getMessage():错误的性质,发生了什么异常
3、finally{}
不管是否发生异常或者捕获异常成功与否都会执行finally语句块中的内容。
3、throw
主要用于自定义异常,抛出异常的对象
4、throws
声明异常并向上级抛出。
异常能往上抛就往上抛直到到最上方再去捕获,因为不知道中间哪层会出现异常,放在最上面会比较好找。
5、当try{},catch(){}中有return,先执行try,有异常跳到catch语句块,然后先执行finally语句块,再执行try或者catch的return(但finally的代码块不会影响try或catch的return结果值)。
public class Test {
public static String test(){
int a=0;
try {
System.out.println(1/0);//出现异常跳到catch
a++;
return "try---a="+a;
}catch (Exception e){
a++;
return "catch---a="+a;
}finally {
a++;
System.out.println("finally---a="+a);
//return "finally加一次的值"+a;
}
}
public static void main(String[] args) {
System.out.println(test());
}
}
注意这里如果我在finally语句块上加了return是不会回去执行try或者catch的return的因为执行finally的语句块就return结束程序了。