java异常处理机制

引言

  异常又叫例外,是程序运行过程中发生的错误,处理这些异常成为异常处理。一些语言通过返回值判断来对程序是否发生异常进行判断,然后根据不同返回值进行相应的处理。这样做又以下几种劣势:

     1. 首先主程序与处理异常的程序混合在一起,造成程序过于庞杂,程序的可读性变差

     2. 不同程序员对返回值的理解不统一,程序的可维护性不够

     3. 没有一种机制能够保证程序的异常一定被处理,可能造成系统内存的泄漏


针对上面这些问题,java提供了很好的解决思路:

  java提供统一的异常处理机制:当一个方法产生异常,java虚拟机产生一个异常对象,该对象携带异常发生时的状态信息,方法调用可以捕获异常,也可以回避异常,异常就会沿着方法调用栈向上传递(如果所有的方法都没有捕获异常,异常会被java虚拟机处理),java处理完异常后,程序会执行异常发生的下一句。


java异常框架

 java异常处理机制-LMLPHP

  java的异常可以分为两类:error和Exception:error是一种严重的错误,不恢复的错误,在程序中不需要进行处理。RunTimeException是一种程序运行过程中出现的错误,不需要捕获

一般的Exception是一种需要进行异常处理的异常


java异常处理机制

java有两种异常处理机制:

1. 使用try{}catch{}finally{}进行处理,自己处理

2. 使用throws和throw进行处理,方法的调用者处理

-----------------------------------------------------

1. 使用try将可能发生异常的代码包住,当发生异常,java虚拟机产生一个异常对象,程序调到第一个catch块,对异常进行匹配,直到匹配到最后一个catch,还是没有匹配上,则将异常抛到程序的调用处。

异常被匹配三种条件:

1. 被捕获的异常和catch的异常类型一致

2. 被捕获的异常时catch的异常的子类

3. 被捕获的异常是catch的异常的接口的实现

------------------------------------------------------

throws在程序的声明处,代表这段程序可能抛出的异常

throw代表如果代码发生异常就会被抛出。

------------------------------------------------------

异常处理的原则:

 1. 处理异常,不要忽略它

2. 只捕获特定的异常,不要一次捕获所有的异常

3. 善于使用finally块

4. try语句不要过大

03-24 02:39