Java-异常
异常关键词
try,catch,finally,throw,throws
示例:
public class Main {
public static void main(String[] args) {
try{
String val=null;
new Main().test(val);
}catch(Exception e){
System.out.println("捕捉到异常了:"+e);
}finally{
System.out.println("finally");
}
}
public void test(String val) throws Exception{
if(val==null){
throw new Exception("val为空");
}
}
}
ps:e.printStackTrach()可以用来打印异常信息
try
监控可能会出现异常的代码块。将可能会出现异常的代码块写在里面。
catch
捕捉对应的异常并处理。
Java已经定义了一些常用的异常类。
Throwable中,除了RuntimeException和Error,其他都是checked exception(即编译器要求必须处理的异常)。
checked exception的几种处理方式:
- 继续抛出,消极的方法,一直可以抛到java虚拟机来处理,就是通过throws exception抛出。
- 用try...catch捕获
对于检查的异常必须处理,或者必须捕获或者必须抛出
unchecked exception的几种处理方式:
- 捕获
- 继续抛出
- 不处理
一个try可以定义多个catch,catch不同类型的异常。但是catch顺序要根据异常从小到大,例如,如果同时catch了AclNotFoundException和Exception,AclNotFoundException要写在Exception的前面。因为AclNotFoundException继承自Exception,AclNotFoundException能捕获到的Exception肯定能捕获到,如果把AclNotFoundException写在Exception后面没有任何意义。有点类似if...else...。写法如下:
try{
}catch(AclNotFoundException ae){
}catch(Exception e){
}
catch中只是处理异常,不要写业务逻辑代码。
finally
不论是否发生异常,都会执行的代码。例如:释放占用的资源等。
throw和throws
throw是主动抛出异常,一般在方法体中使用。throws是在方法上抛出异常,让调用该方法的调用者去捕获。

浙公网安备 33010602011771号