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 异常的处理流程
程序的处理流程:
如果没有异常:code1——code3——code4
有异常:code1——code2——code3——code4
3 自定义异常
可查异常:继承Exception
不可查异常:继承RunTimeException
runTimeException一般是由特性操作引发,但这些操作在Java应用程序中会频繁出现。例如,若每次使用对象时,都必须编写异常处理代码来检查null引用,则整个应用程序很快将变成一个庞大的try-catch块。
比如:程序参数不满足条件,可见返回一个自定义的runTimeException。
但是对于程序的业务处理不正确,或者出现了不被期望的情况,此时应该抛出检查异常。
4 异常链如何处理:(//todo )
(1) 在调用外部接口出现异常,如果自己不能处理,则将异常往上层抛,由上层处理。
(2) 不要压制异常。即如果程序抛出了一个已检查异常,那么即使你不想处理它,也不要在catch的时候写一个空的catch块,使这个异常被压制,可以直接向上层继续抛出。
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块,使这个异常被压制,可以直接向上层继续抛出。
相关文章推荐
- java学习之 io流的基本操作(1)
- java学习之 io流的基本操作(1)
- java学习之 io流的基本操作(1)
- java学习之 io流的基本操作(1)
- java学习之 io流的基本操作(1)
- java学习之 io流的基本操作(1)
- java学习之 io流的基本操作(1)
- java学习之 io流的基本操作(1)
- java学习之 io流的基本操作(1)
- java学习之 io流的基本操作(1)
- Java数组
- 2016蓝桥杯假期任务之《最大乘积》
- 【JAVA】13、循环的中断
- Java单例设计模式
- java 读取properties 文件的几种方法与NoClassDefFoundError错误
- Java NIO基本使用
- [017]Java设计模式3——策略模式
- javaWeb安全篇(1)——防盗链技术的实现
- Java开发中的23种设计模式详解
- java byte to hex