java异常处理机制
引言
异常又叫例外,是程序运行过程中发生的错误,处理这些异常成为异常处理。一些语言通过返回值判断来对程序是否发生异常进行判断,然后根据不同返回值进行相应的处理。这样做又以下几种劣势:
1. 首先主程序与处理异常的程序混合在一起,造成程序过于庞杂,程序的可读性变差
2. 不同程序员对返回值的理解不统一,程序的可维护性不够
3. 没有一种机制能够保证程序的异常一定被处理,可能造成系统内存的泄漏
针对上面这些问题,java提供了很好的解决思路:
java提供统一的异常处理机制:当一个方法产生异常,java虚拟机产生一个异常对象,该对象携带异常发生时的状态信息,方法调用可以捕获异常,也可以回避异常,异常就会沿着方法调用栈向上传递(如果所有的方法都没有捕获异常,异常会被java虚拟机处理),java处理完异常后,程序会执行异常发生的下一句。
java异常框架
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语句不要过大