异常处理

本文深入探讨Java中的异常处理机制,包括异常的三种处理方式、异常类型(检查异常、运行时异常、错误)、throws关键字的使用、事务中异常的正确处理方式,以及如何使用try、catch和finally等语句进行异常捕获。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常的处理方式

对于一个异常的处理,在JAVA中,有3种方式:

1、方法本身直接抓捕异常,不让这个”异常”对象沿着方法调用栈,继续向下传递
2、方法本身直接抓捕异常,并继续让这个”异常”对象沿着方法调用栈,继续向下传递
3、不去抓捕异常,就让这个”异常”对象沿着方法调用栈,继续向下传递,并且让方法从方法栈中直接弹出

异常的类型

1、检查异常,也被称之为“编译时异常”,由编译器检查出来的异常
2、”运行时异常”,编译器无法检查出来,只有程序在运行时,抛出的异常,才是运行时异常
3、错误,错误实际上已经脱离了”异常”的范畴,因为程序员无法通过修改代码来解决问题了,比如:内存不足,网线被耗子拆了,硬盘不足等问题

*throws关键字,用来给方法的调用者,提前声明:我这个方法可能会抛出异常
方法异常的声明,通常用于编译时异常,而运行时异常不需要

当一个方法中,可能抛出不计数的异常个数,解决方案:

1、定义多个catch块,分别进行代码的监控,
2,’在catch块的参数类型定义时,直接定义上层父类,采用动态多态的方式
3.例外一个需要注意的是:在定义多个catch块的时候,定义的顺序需要遵循从小到大的顺序

“编译时异常”的解决的方案:

I”要么直接异常处理,要么就给方法的调用者进行”异常声明”

“而运行时异常”的解决方案,不需要异常处理,也不需要”异常声明”,.让它报错,报错以后,我们程序员再通过”条件控制语句”对其进行控制即可

事务

具有明确边界的并且执行顺序有序的过程就是一个事务
参与到同一个事务范围内的业务方法,为了保证事务的完整性,必须要申明异常而不是抓补异常.
当调用者为了保证事务的一致性,必须要知道被调用者执行是否成功

什么时候用”异常的申明”?

:当方法的调用者需要知道”调用方法”的具体执行情况时,而并非是”成没成功失没失败
”我们就有必要针对”调用方法”进行异常申明.比如:transfer()想知道”张三给李四转钱5000”这个过程中, 所有的执行方法的具体执行情况时。

捕获异常

1.Try程序块里面的语句是按顺序执行的语句
2.当try程序块里面的语句抛出一个异常的时候,程序的控制转向了相匹配的catch程序块, catch程序块里面的语句被执行。
3.当异常发生后,程序执行将忽略try程序块中剩余的语句,继续执行程序块后面的语句。
4.如果在try程序块中没有抛出异常,那么catch块将被忽略。程序将继续执行try-catch下面的语句
5.在一个try-catch语句中,当有多个catch块的时候,它们被顺序检查
6.在检查过程中,注意异常的匹配关系是很重要的
7.当一个异常被抛出,与它相匹配的catch块被执行,其它的 catch块,就被忽略掉不再执行
8.如果没有catch块匹配抛出的异常,那么系统会在堆栈中搜索,找到一个匹配的捕获方法。
9.如果仍然没有找到,那么系统将处理抛出异常
10.如果有一块代码不管是否发生异常抛出都要被执行,我们使用关键字finally

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值