第三章:异常

一、异常的理解

        1. 异常:程序运行过程中出现的非正常情况

        2. 异常的分类:

        (1)父类:Throwable,位于java.lang包中

        (2)子类:Error,错误

        (3)子类:Exception,异常

二、异常的分类

        1. 父类:Throwable,位于java.lang包中

        (1)Throwable类是Java语言中所有错误或异常的超类(父类)

        (2)常见构造方法:

                Throwable():无参数的构造方法

                Throwable(String message) :带有字符串类型的构造方法,参数异常的信息

        (3)成员方法:

                viod printStackTrace():打印异样详细信息,用于程序开发调式

                String getMessage() :获取字符串类型的异常信息

        2. 子类:Error,代表错误

        (1)Error是Throwable的子类,用于指示合理的应用程序不应该试图捕获的严重问题(白哦是仅靠程序无法恢复的严重错误)

        (2)案例:内存空间不足,或是Java虚拟机方法调用是栈溢出。(java.lang.StackOverflowError)

        (3)特点:遇到这样的错误,程序中无法处理。

        3. 子类:Exception,代表异常

        (1)运行时异常:java.lang.RuntimeException的子类或是间接的子类

                a. 特点:编译器不会检测它,运行时报错

                b. 案例:

                        java.lang.ArrayIndexOutOfBoundsException(数组的下标越界)

                        java.lang.StringIndexOutOfBoundsException(字符串下标越界)

                        java.lang.IndexOutOfBoundsEception(下标越界)

                        java.lang.NullPointerException(空指针异常)

                        java.lang.NumberFormatException(数字格式转换异常)

                        java.lang.ClassCastException(类型转换异常)

                c. 处理:这种异常可以避免,可以处理也可以不处理

        (2)非运行时异常:和java.lang.RuntimeException 没有任何继承关系的异常类

                a. 特点:编译过程中编译器进行检测,编译报错

                b. 案例:

                                class.forName("hello");

                c. 处理:非运行时异常一旦出现必须处理,否则编译无法通过

                d. 编译报错:

                                i. 语法问题

                                ii. 非运行时异常,必须通过异常的处理手段进行解决

三、异常的产生

        1. 自动产生异常:运行程序时,遇到错误的代码,自动产生异常,程序自动终止

                结果:程序因为异常而被终止

        2. 手动产生异常:

        (1)关键字:throw

        (2)语法:throw new 异常类名(“异常信息”);

        (3)位置:必须动议方法的内部

        (4)结果:程序因异常而被终止

四、异常传递

        异常传递:按着方法的调用链方向反向传递,直至JVM,最终导致程序终止

五、异常的处理

        1. 消极处理异常

        (1)关键字:throws

        (2)位置:定义方法的声明部分

        (3)语法:

                        修饰符:返回值类型  方法名(形参)throws  异常类名1,异常类名2{}

        (4)结果:程序依然因为异常而被终止,没有从根本上解决问题,只是推卸责任

        (5)作用:可以让非运行时异常编译通过

        2. 积极处理异常

        (1)语法:

                try{

                        // 可能出现异常的语句

                }catch(异常类名 e){

                        // 出现异常时,需要执行的语句

                }

        (2)位置:定义在方法实现内

        (3)try后面跟多个catch结构,仓上往下依次进行匹配

        (4)利用多态的技术,使用父类型处理子类型的异常;而且子类型在前,父类型在后

        (5)finally:定义在try..catch后面,finally中的语句,不管有没有异常必须执行的语句

                a. 语法

                        try{

                                // 可能出现异常的语句

                        }catch(异常类名 e){

                                // 出现异常时,需要执行的语句

                        }finally{

                                // 不管有没有异常,都需要执行的语句

                        }

六、自定义异常类

        1.定义一个类继承异常类

        (1)定义一个异常类继承了 Exception,定义的为非运行时异常

        (2)定义异常类继承了 RuntimeException,则定义的为运行时异常

        2. 提供两个构造方法

        (1)无参数的构造方法

        (2)带有字符串类型的参数构造方法

                public 类名(String message){

                        super(message);

                }

七、方法覆盖[终极版]

        1. 子类的方法名、形参列表、返回值类型和父类相同

        2. 子类的访问修饰符和夫类型或是比夫类型更宽

        3. 子类不能抛出比父类更宽的异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值