java回顾之错误处理机制

简单介绍一下java的异常处理机制,主要参考了某机构的教材


简单说就是当程序出现异常,java虚拟机会先去看是否异常被捕获,即异常代码是否被try...catch包裹,如果存在则去查找对应的catch的错误,然后去执行对应的异常处理方式。
例如:

以上的catch可以写不同的错误类,如:NullPointerException,ClassNotFoundException等。可以对应来捕获异常,如:
try{
...
}catch(NullPointerException e){
...
}catch(RuntimeException e){
...
}catch(Exception e){
...
}finally{
...
}
注意,以上catch的错误类型是有包含关系的。

就像上面的,NullPointerException属于RuntimeException,而RuntimeException属于Exception。

常见的RuntimeException主要有以下几个:

IllegalArgumentException(传参不合法);NullPointerException(空指针异常);ArrayIndexOutOfBoundsException(数组越界);ClassCastException(类转换异常);NumberFormatException(字符串转换数值异常)等。

另外也可以自定义异常处理。如:
class 异常类名 extends Exception{
...
}

需要说明的还有异常类Exception有三个常用方法,可以在catch中使用:
1、printStackTrace输出错误信息,用来输出错误堆栈中的信息。使用如:
try{
..
}catch(Exception e){
e.printStackTrace();
}
2、getMessage可以获得错误信息。
try{
..
}catch(Exception e){
System.out.println(e.getMessage());
}
3、getCause获得出现异常的原因。

但是如果异常未捕获则,在执行完finally代码块之后,当前线程所属的ThreadGroup的uncaughtException方法被调用之后,遇到异常的当前现成被终止。

以上为捕获异常的处理,还有一种是主动抛出异常的处理,如:
try{
...
}catch(Exception e){
throw e;
}
这样抛出必须得再自己捕获处理。

另外这个throw可以在任意位置throw new Exception(),然后再自己捕获,正好可以测试错误处理。


或者

public static void stringToDate(String str) throws ParseException{
...
}

抛出到调用该方法的地方来处理。


以上!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值