异常组成、作用、处理方式(3种)、异常方法、自定义异常

目录

异常的组成:运行异常与编译异常

两者区别:编译异常用来提醒程序员,运行异常大部分是由于参数传递错误导致

异常作用:

作用1:就是平时的报错,方便我们找到报错的来源

作用2:在方法内部将异常返回给调用处,了解底层执行情况:

异常的处理方式:3种

1、默认方式:打印异常信息,并且不再执行下方的所有代码

2、自己处理(捕获异常):代码出现异常后,也可以继续执行下面的代码

利用格式:

示例2:

注意点:

关于自己处理的四个问题:

1、如果try中没有遇到问题,如何执行?

2、如果try中遇到很多问题,如何执行?

为什么要把父类异常对象放最后?       和多态有关

多种异常采用一种捕捉方式时,可以这样写:"|"

3、try中遇到的异常没有被捕获,怎么执行?

4、try中如果遇到问题,try下面的代码还会执行吗?(可以结合问题2看)

3、抛出异常的格式:throw和throws

示例:

异常中的常见方法:第三个最常用

关于第三条的细节:

1、只是打印异常信息,并不会终止程序

2、printStackTrace源码中:

自定义异常:针对具体异常的自定义,使得异常更加清晰

以一道例题展开说明:

自定义什么?

自定义异常:

一般命名:

一般只重写继承父类异常的前两个方法,一个空参一个带参

解题过程:

如果不采取自定义,采用广义的运行异常的对象RuntimeException e:


异常的组成:运行异常与编译异常

两者区别:编译异常用来提醒程序员,运行异常大部分是由于参数传递错误导致

异常作用:

作用1:就是平时的报错,方便我们找到报错的来源

作用2:在方法内部将异常返回给调用处,了解底层执行情况:

如:我要输入学生年龄,限制在18-40,可以进行如下操作:throw一个异常对象,让调用处知道已经出错,方便后面利用try,catch进行异常获取,进行下面第二个图的操作,可自主进行选择

        

异常的处理方式:3种

1、默认方式:打印异常信息,并且不再执行下方的所有代码

示例1:

2、自己处理(捕获异常):代码出现异常后,也可以继续执行下面的代码

利用格式:

示例2:

注意点:

关于自己处理的四个问题:

1、如果try中没有遇到问题,如何执行?

        会只把try中代码执行完毕,不会执行catch中的代码(只有出现异常时,才会进入catch)

2、如果try中遇到很多问题,如何执行?

        try中出现很多问题,会写多个catch与之对应,保证其中任何一个问题出现,都可以被捕获,但是,当一个异常出现后,将不再执行这个异常后面的其他语句异常,跳出try,执行catch对应的异常捕获。因为代码中可能存在多个不同的异常情况,这个多个catch的主要目的是为了:捕获这段代码中出现了异常的这种现象,而不是要把所有异常都捕获出来,捕获出其中一个异常后,他的目标就已经实现了。

为什么要把父类异常对象放最后?       和多态有关

 catch多重异常时,子异常类必须在它们任何父类之前。因为运用父类的catch语句将捕获该类型及其所有子类类型的异常。这样,如果子类在父类后面,子类将永远不会到达。你想写也不行,系统会报编译错误。

多种异常采用一种捕捉方式时,可以这样写:"|"

3、try中遇到的异常没有被捕获,怎么执行?

没有被捕获,说明try中的异常和catch中的异常对象不相同,此时相当于白写了这个try..catch,直接采用JVM默认方法

4、try中如果遇到问题,try下面的代码还会执行吗?(可以结合问题2看)

3、抛出异常的格式:throw和throws

示例:

异常中的常见方法:第三个最常用

关于第三条的细节:

1、只是打印异常信息,并不会终止程序

2、printStackTrace源码中:

自定义异常:针对具体异常的自定义,使得异常更加清晰

以一道例题展开说明:

自定义什么?

长度在3-10间,年龄在18-40岁间这些显然不是RuntimeException里面定义好的异常,如果触发了这些异常,为了更加清晰表明到底是哪种,需要自定义异常。

自定义异常:

一般命名:

一般只重写继承父类异常的前两个方法,一个空参一个带参

解题过程:

定义年龄异常:

public class NameFormatException extends RuntimeException{
    public NameFormatException() {
        super();
    }

    public NameFormatException(String message) {
        super(message);
    }
}

定义名字异常:

public class AgeOutOfBoundsException extends RuntimeException{
    public AgeOutOfBoundsException() {
        super();
    }

    public AgeOutOfBoundsException(String message) {
        super(message);
    }
}

在javabean文件中:调用并抛出

实现类:

如果不采取自定义,采用广义的运行异常的对象RuntimeException e

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值