黑马程序员~异常小述

来源:互联网 发布:淘宝的宝贝描述分数 编辑:程序博客网 时间:2024/05/01 18:37
------- android培训、java培训、期待与您交流! ----------



如果程序在编译时没有错误信息产生,而在程序运行时,出现一些问题,这样的问题就被称为异常。Java对异常的处理也采用了面向对象的方式,所有的异常以类的形式存在。除了自带的异常类外, 也可以自定义异常。这些异常有的需要编程时手动进行捕获处理或声明抛出,有的是由JVM自动进行捕获处理。手动处理是通过try-catch, throws语句来解决。

一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。如果父类抛出多个异常,那么子类必须抛出那些异常的一个子集,不能抛出新的异常。

异常的体系:

                                

一、Error类及子类:

通常描述出现重大问题,仅靠修改程序本身是不能恢复执行的,致命性的java内部错误或资源耗尽错误。如运行的类不存在或者内存溢出等。多数情况下,发生此类问题时建议终止程序。

二、Exception类及子类:

非致命类,可以通过编写代码解决捕获处理后正常运行。在编程时进行的异常处理,主要是针对这个部分进行操作。

该类分为两种类型,一个是RuntimeException,另一个是非RuntimeException。

1、RuntimeException一般不通过try-catch, throws语句解决,而是java虚拟机在运行时自动捕获并抛出。如除数为零,数组角标越界,空指针异常等。

2、非RuntimeException可通过try-catch, throws语句解决。常见的使用try-catch处理异常时会有如下问题:

(1)在使用try的时候,不应该把多个可能出现异常的代码放入一个try块中,这样出现问题不容易分析。如果需要在同一个try中放入多个可能报不同异常的代码,最好分开catch去处理,不要只捕获一个Exception。

(2)编写程序时有时只对错误进行捕获,却不处理,这样在程序中很难发现错误。如果在catch块中只调用printStackTrace方法,仅是对调试程序有帮助,最好在处理时能针对用户做出友好设计。

(3)另外,如果程序占用了资源,那么在try-catch结束之后应该使用finally语句关闭资源。

(4)在调用程序输出信息的时候,可能输出过程中会发生异常。由于异常前可能已经有信息显示给用户了,那么用户得到的信息就是一个片段,是不完整的,这样的话应该提示用户请求的信息有缺失。或者使用缓冲区,在信息确认完整时再显示给用户。



  ------- android培训、java培训、期待与您交流! ----------  详细请查看:http://edu.csdn.net/heima/

原创粉丝点击