Java异常处理、自定义运行和编译异常及释放资源try-with-resouce

定义

image-20231205222111614

异常的体系

image-20231205222256344

main方法是JVM调用的,如果main方法把异常抛给JVM,则JVM内部还是会用try catch把异常进行处理,控制台返回相关异常信息。

image-20231205222929054

自定义异常(运行时异常、编译时异常)

throws用于方法抛异常。throw new 异常类用于语句中

image-20231205223039771

image-20231205223048104

1.自定义运行时异常

1.在自定义异常类extends RuntimeException并重写有参和无参构造器,然后构造器内部super(自定义异常信息)

image-20231205223213981

image-20231205223406325

image-20231205223611574

2.自定义编译时异常

1.extends Exception,然后重写无参构造器和有参构造器方法调用super(自定义信息)

image-20231205223907560

image-20231205224237915

异常的处理

异常提高系统的健壮性(容错),提高用户体验。

image-20231205225440966

推荐的异常处理

image-20231205224652782

不推荐的异常处理

image-20231205224731198

1.响应合适的信息给用户

示例代码:

对异常信息相应直观的信息。

image-20231205224942069

image-20231205225039317

对任何异常都抛出用throws Exception ,捕获异常的话直接写catch(Exception e),好处是对异常做统一处理,但是坏处是不能对单个异常,做单个特殊异常处理。

2.尝试修复

示例代码:

image-20231205225350376

finally

image-20231207140015563

示例代码:

1.无异常,执行finally

image-20231207135206284

2.出现异常,仍然执行finally

image-20231207135229385

3.无finally,但捕获到了异常,下面代码可正常执行

image-20231207135332701

4.try、catch中出现return,finally还是会执行

image-20231207135439714

5.除非虚拟机终止,finaly才不会执行,见下图

image-20231207135528926

6.尽管try,catch有return,但只要finally中有return,那么return的值一定是finally中的return的值

image-20231207135724209

finally中一般用来释放资源,不太推荐return返回值

释放资源

image-20231207140214038

释放资源(try-with-resource方法)

1.try-catch-finally(代码比较复杂,但也可以使用)

image-20231207140333168

2.try-witch-resource(代码简洁)

try-catch执行完成后,会自动执行资源的close()方法

image-20231207141017056

图1-1

image-20231207140912239

格式:

try(

资源

)

资源就是该类实现AutoCloseable接口或者它的父类实现了AutoCloseable也算该子类实现了哦,在代码执行后会自动执行重写的close()方法,如上图1-1。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫青.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值