编程中捕获Throwable的坑,你中招了吗?

编程中捕获Throwable的坑,你中招了吗?什么是 throwableThr 包括两种类型的子类 Error 和 Exception Error 表示严重错误 通常表示虚拟机无法恢复的错误 比如 OutOfMemoryE 和 StackOverflo

大家好,欢迎来到IT知识分享网。

什么是throwable

Throwable 包括两种类型的子类:Error 和 Exception。

编程中捕获Throwable的坑,你中招了吗?

  1. Error:表示严重错误,通常表示虚拟机无法恢复的错误,比如 OutOfMemoryError 和 StackOverflowError。这种错误通常是由于系统级别的问题导致的,一般情况下不需要捕获和处理。
  2. Exception:表示可控制的异常,可以被捕获和处理。Exception 又分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。
  3. 受检异常:必须在代码中显示地捕获和处理,否则编译器将报错。比如 IOException 和 ClassNotFoundException 等。
  4. 非受检异常:可以不进行捕获和处理。这些异常通常是由程序错误导致的,比如 NullPointerException 和 ArrayIndexOutOfBoundsException 等。

在实际编程中,我们通常只需要捕获和处理特定类型的异常,而不是捕获 Throwable。捕获 Throwable 可能会导致无法处理的异常被忽略,从而影响程序的稳定性和可靠性。所以,一般情况下,不建议捕获 Throwable。

例如,以下代码只捕获了特定类型的异常,而没有捕获 Throwable:

try { // 可能会抛出异常的代码 } catch (Exception e) { log.error(e.getmessage(),e); // 处理异常的代码 }

throwable的坑

笔者在实际工作过程发现,线上出现奇怪问题,某个请求处理失败了,但是没有日志,catch代码块没有被执行,因此直接跳过了错误处理逻辑,没有触发报警,但是finally块缺执行了。

如果你要捕获 Throwable,通常是为了在处理无法处理的异常时进行一些特殊的操作,如日志记录、资源释放等。但是要注意,捕获 Throwable 可能会导致程序进入不可预测的状态,所以需要谨慎操作。

编程中捕获Throwable的坑,你中招了吗?

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/183976.html

(0)
上一篇 2025-07-24 09:20
下一篇 2025-07-24 09:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信