java 异常处理
来源:互联网 发布:日本手表海淘 知乎 编辑:程序博客网 时间:2024/06/03 14:48
java语言中,Exception是所有异常的父类,任何异常都扩展于Exception类。
如果要定义一个新的错误类型,就要扩展一个新的Exception子类。采用异常可以精确的定位到导致程序出错的源代码位置,并获得详细的错误信息。
通过异常类,可以提供更为有用的错误信息,以便于用户进行跟踪和调试程序,降低了错误处理代码的复杂度。把正确的返回结果与错误信息分离,降低了程序的复杂度。调用者无需要对返回结果进行更多的了解。
有一个初学者容易忽略的概念:
Java异常分为两大类:checked 异常和unChecked 异常。
所有继承java.lang.Exception 的异常都属于checked异常,所有继承java.lang.RuntimeException的异常都属于unChecked异常。
(1)当一个方法去调用一个可能抛出checked异常的方法,必须通过try…catch块对异常进行捕获进行处理或者重新抛出。
(2)unChecked异常也称为运行时异常,通常RuntimeException都表示用户无法恢复的异常,如无法获得数据库连接,不能打开文件等。虽然用户也可以像处理checked异常一样捕获unChecked异常。但是如果调用者并没有去捕获unChecked异常时,编译器并不会强制你那么做。
checked异常导致了许多难以理解的代码产生当开发人员必须去捕获一个自己无法正确处理的checked异常,通常的是重新封装成一个新的异常后再抛出。这样做并没有为程序带来任何好处,反而使代码晚难以理解。就像我们使用JDBC代码那样,需要处理非常多的try…catch.,真正有用的代码被包含在try…catch之内。使得理解这个方法变理困难起来,checked异常导致异常被不断的封装成另一个类异常后再抛出
所以,使用原则是:
1.如果一个异常是致命的,不可恢复的,或者调用者去捕获它没有任何益处,使用unChecked异常。如果一个异常是可以恢复的,可以被调用者正确处理的,使用checked异常。
2.在使用unChecked异常时,必须在在方法声明中详细的说明该方法可能会抛出的unChekced异常,由调用者自己去决定是否捕获unChecked异常。
如何记录异常
作为一个大型的应用系统都需要用日志文件来记录系统的运行,以便于跟踪和记录系统的运行情况。系统发生的异常理所当然的需要记录在日志系统中。
异常应该在最初产生的位置记录!如果必须捕获一个无法正确处理的异常,仅仅是把它封装成另外一种异常往上抛出,不必再次把已经被记录过的异常再次记录。
如果捕获到一个异常,但是这个异常是可以处理的,则无需要记录异常。捕获到一个未记录过的异常或外部系统异常时,应该记录异常的详细信息。
- 【java】java异常处理
- java异常和异常处理
- Java 异常及异常处理
- java异常与异常处理
- Java异常处理-----自定义异常
- Java异常与异常处理
- java异常及异常处理
- Java 异常与异常处理
- Java异常与异常处理
- Java异常及异常处理
- Java异常处理--自定义异常
- JAVA异常之异常处理
- Java异常处理-----自行处理
- Java异常处理-----抛出处理
- Java异常处理-----抛出处理
- java异常处理
- java 异常处理分析
- java异常处理
- mysql没有cmd client时要怎么进入?
- S3C2440 之USB设备篇
- TcpWrappers
- QT 基于mplayer媒体播放器
- Manual:RESTful Web Services (Chinese)
- java 异常处理
- 所谓的内存释放工具——原理
- 飞鸽传书是企业网络营销管理专家
- 【转】素数总结
- (百度转)感抗 容抗
- [转]4岁儿童的教育方法
- 马太效应
- [转]4岁孩子的教育应该注意些什么
- 一个关于姿势识别的总结