您的位置:首页 > 编程语言 > Java开发

Java异常处理

2016-02-17 23:29 477 查看
1 java异常类层次结构图。



throwable是java异常类的祖先。他有两个子类。一个是Exception(异常)和Error(错误)。

Error表示:程序无法处理的错误。大多数错误与代码编写者执行的操作无关,而是由于代码运行时JVM(java 虚拟机)出现的问题。

Exception:程序本身可以处理的异常。

java异常又分为两种:

(1) 可查异常

要求编译器必须处理的异常。

除了RuntimeException及其子类以外,其他的Exception类。

(2) 不可查异常

RuntimeException和Error。

2 异常的处理流程

try{
//code1
}catch (Exception e){
//code2
}finally {
//code3
}
//code 4


程序的处理流程:

如果没有异常:code1——code3——code4
有异常:code1——code2——code3——code4

3 自定义异常

可查异常:继承Exception

public class MyException extends Exception {
private String errorMsg;

public String getErrorMsg() {
return errorMsg;
}

public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}

public MyException(String errorMsg){
super(errorMsg);
this.errorMsg = errorMsg;

}

public MyException(String errorMsg,Throwable throwable){
super(errorMsg,throwable);
this.errorMsg = errorMsg;
}
}


不可查异常:继承RunTimeException

runTimeException一般是由特性操作引发,但这些操作在Java应用程序中会频繁出现。例如,若每次使用对象时,都必须编写异常处理代码来检查null引用,则整个应用程序很快将变成一个庞大的try-catch块。

比如:程序参数不满足条件,可见返回一个自定义的runTimeException。

但是对于程序的业务处理不正确,或者出现了不被期望的情况,此时应该抛出检查异常。

4 异常链如何处理:(//todo )

(1) 在调用外部接口出现异常,如果自己不能处理,则将异常往上层抛,由上层处理。

(2) 不要压制异常。即如果程序抛出了一个已检查异常,那么即使你不想处理它,也不要在catch的时候写一个空的catch块,使这个异常被压制,可以直接向上层继续抛出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: