java中的异常(Exception)

java中的异常(Exception)

   1 异常为何物
           A    为非正常的,不同于平常的

          B   本身是一个对象,是程序退出的安全通道

          C    可以使程序的执行流程发生改变,让程序的控制权转移到异常处理器

   2 异常的产生

           A     异常(Exception)就是程序在运行过程中发生的由于硬件、软件错误等导致的程序不正常事件

           B     程序代码本身的原因造成的错误理论上可以避免,有些如内存不足,文件操作等错误是不可预测,与运行环境有关

   3 异常的类型

           A    编译时异常 

           B    运行时异常

   4 异常的处理

           A   通过try…catch语句进行捕获异常  

                 遇到错误,方法立即结束,并不返回一个值;同时,抛出一个异常对象

                 调用该方法的程序也不会继续执行下去,而是搜索一个可以处理该异常的异常处理器,并执行其中的代码
 

          B    throws --- 声明异常 
                 throw  --- 抛出异常  
                 try&catch --- 捕获异常
                 finally --- 其中的代码在try中语句结束前执行,finally子句是可选的

           C   传统的处理异常的办法是:用函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果。这样做有有一定的弊端:

                      如函数返回-1代表出现异常,但是假如函数确实要返回-1这个正确的值时就会出现混淆;

                      将程序代码与处理异常的代码混在一起,使得可读性降低;

                       由调用函数的程序来分析错误,这就要求程序员对库函数有很深的了解 ;   

   5 常见的异常

             A   Error体系 
                       Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形;

                       应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出);

                       如果出现这种错误,除了尽力使程序安全退出外,在其它方面是无能为力的。

                     所以说,在进行程序设计时,应该更关注Exception体系 
             B   Exception体系 
                      Exception体系包括RuntimeException体系和其它非RuntimeException的体系 
             C   RuntimeException体系

                      包括错误的类型转换、数组越界访问和试图访问空指针等等;

                      如果出现RuntimeException,那么一定是程序员的错误;

                      通过检查数组下标和数组边界来避免数组越界访问异常
             D   其他(一般是外部错误如:IOException等等)

                       异常,如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误
 

   6 需要注意的地方

           A   异常都是从类Throwable派生出来

           B   尽可能捕获具体的异常,出错时便于查找

           C   捕获的异常时,范围应该从小到大

           D   捕获的异常时,若try中的代码产生多种异常则可以对应多个catch语句

           E   异常让子类(更特殊的类)先处理,如果处理不了,再有父类进行处理

           F   若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面先处理
 

           G   覆盖父类某方法的子类方法,不能抛出比父类方法更多的异常;

                 在设计父类的方法时抛出异常,但实际的实现方法的代码却并不抛出异常;

                 这样做的目的就是为了方便子类方法覆盖父类方法时可以抛出异常
 

            H   异常对象通常有两种构造函数:一种是无参数的构造函数;

                  另一种是带一个字符串的构造函数,这个字符串将作为这个异常对象除了类型名以外的额外说明

             I    如果一个异常没有被处理,那么,对于一个非图形界面的程序而言,该程序会被中止并输出异常信息;

                  对于一个图形界面程序,也会输出异常的信息,但是程序并不中止

             J   异常处理5个关键字:try、catch、throw、throws和finally

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值