【Java 问题】基础——异常

接上文

39.Java 中异常层级结构?

Java的异常是分为多层的。
在这里插入图片描述
Throwable 是 Java 语言中所有错误或异常的基类。 Throwable 又分为 Error 和 Exception ,其中Error是系统内部错误,比如虚拟机异常,是程序无法处理的。 Exception 是程序问题导致的异常,又分为两种:

  • CheckedException受检异常:编译器会强制检查并要求处理的异常。
  • RuntimeException运行时异常:程序运行中出现异常,比如我们熟悉的空指针、数组下标越界等等

40.异常的处理机制?

针对异常的处理主要有两种方式:

在这里插入图片描述

  • 遇到异常不进行具体处理,而是继续抛给调用者 (throw,throws)

抛出异常有三种形式,一是 throw,一个 throws,还有一种系统自动抛异常。

throws 用在方法上,后面跟的是异常类,可以跟多个;而 throw 用在方法内,后面跟的是异常对象。

  • try catch 捕获异常

在catch语句块中补货发生的异常,并进行处理。

在这里插入图片描述
try-catch捕获异常的时候还可以选择加上finally语句块,f inally语句块不管程序是否正常执行,最终它都会必然执行

41.三道经典异常处理代码题

在这里插入图片描述
执行结果:31。

try、catch。ϐ inally 的基础用法,在 return 前会先执行 ϐ inally 语句块,所以是先输出finally 里的 3,再输出 return 的 1

在这里插入图片描述
try 返回前先执行 finally,结果 finally 里不按套路出牌,直接 return 了,自然也就走不到 try 里面的 return 了。

在这里插入图片描述
大家可能会以为结果应该是 3,因为在 return 前会执行 ϐ inally,而 i 在 finally 中被修改为 3 了,那最终返回 i 不是应该为 3 吗?

但其实,在执行 finally 之前,JVM 会先将 i 的结果暂存起来,然后 ϐ inally 执行完毕后,会返回之前暂存的结果,而不是返回 i,所以即使 i 已经被修改为 3,最终返回的还是之前暂存起来的结果 2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杰深入学习计算机

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

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

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

打赏作者

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

抵扣说明:

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

余额充值