异常的捕获和处理

异常的概述:

认识异常:

异常时指在程序的运行过程中所发生的不正常时间,比如文件找不到,网络连接中断,数组下标越界,空指针等,异常会中断正在运行的程序。

异常处理:

if-else语句处理异常有一下的缺点:
1、代码臃肿,加入了大量的异常情况判断和处理代码。

2、程序员把相当多的精力异常处理上,占用大部分时间影响开发效率。

3、很难举例所有的异常情况,程序仍旧不健壮。

4、异常和代码放在一起,影响代码的可读性。

异常体系结构:

所有异常都是THrowable类的子类,它派生了两个子类:Error类和Exception类

1、Error类:表述仅靠程序本身无法恢复的严重错误。

2、Exception类:由Java程序抛出和处理的非严重错误。

运行时异常:包括RuntimeException及所有的子类,不要求程序必须对它们进行处理。

Hecked异常(非运行时异常):除了运行时异常的其他从Exception类继承来的异常类。

常见的异常类:

异常处理:

使用try-catch处理异常

如果try语句块中所有语句正常执行完毕,没有异常发生,那么catch语句被忽略。

如果try语句在执行时发生异常,并且和catch异常类型匹配,那么tey语句剩下的代码会被忽略,catch会被执行。

如果try语句发生异常,而且异常不属于catch语句,那么方法将会被退出。

try-catch-finally语句执行流程:

1、如果try语句正常执行完毕,finally语句也被执行

2、如果try语句异常,不管能不能被catch捕获,都会执行finally。

try必须存在,catch,finally至少一个出现。

在catch语句中存在return语句,finally语句中的语句也会执行,发生异常执行的顺序是,先执行catch语句中的return之前的语句,在执行finally语句,最后执行catch语句中的return、退出。

在使用多重catch语句是,catch语句的排列顺序必须是子类到父类,最后一个都是Exception类。

使用throws抛出异常:

如果一个方法体中抛出了异常,并且能即使捕获,通过关键字throws声明某个异常可能抛出的各种异常以通知调用者。throw可以同时声明多个异常,之间逗号隔开。

使用throw抛出异常

throws和throw的区别:

1、作用不同throw用于程序员自行产生并抛出异常,throws用于声明该方法内抛出了异常。

2、使用的位置不同:throw位于方法体内部,可以作为单独语句使用;throws必须跟在方法参数列表候面,不能单独使用。

3、内容不同:throw抛出一个异常对象,只能是一个;throws候面异常类可以跟多个。

自定义异常:

1、定义异常类,并继承Exception或者RuntimeException。

2、编写异常类的构造方法,并继承父类的实现。

3、实例化自定义异常对象,并在程序中使用throw抛出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值