大家好,欢迎来到IT知识分享网。
什么是throwable
Throwable 包括两种类型的子类:Error 和 Exception。

- Error:表示严重错误,通常表示虚拟机无法恢复的错误,比如 OutOfMemoryError 和 StackOverflowError。这种错误通常是由于系统级别的问题导致的,一般情况下不需要捕获和处理。
- Exception:表示可控制的异常,可以被捕获和处理。Exception 又分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。
- 受检异常:必须在代码中显示地捕获和处理,否则编译器将报错。比如 IOException 和 ClassNotFoundException 等。
- 非受检异常:可以不进行捕获和处理。这些异常通常是由程序错误导致的,比如 NullPointerException 和 ArrayIndexOutOfBoundsException 等。
在实际编程中,我们通常只需要捕获和处理特定类型的异常,而不是捕获 Throwable。捕获 Throwable 可能会导致无法处理的异常被忽略,从而影响程序的稳定性和可靠性。所以,一般情况下,不建议捕获 Throwable。
例如,以下代码只捕获了特定类型的异常,而没有捕获 Throwable:
try { // 可能会抛出异常的代码 } catch (Exception e) { log.error(e.getmessage(),e); // 处理异常的代码 }
throwable的坑
笔者在实际工作过程发现,线上出现奇怪问题,某个请求处理失败了,但是没有日志,catch代码块没有被执行,因此直接跳过了错误处理逻辑,没有触发报警,但是finally块缺执行了。
如果你要捕获 Throwable,通常是为了在处理无法处理的异常时进行一些特殊的操作,如日志记录、资源释放等。但是要注意,捕获 Throwable 可能会导致程序进入不可预测的状态,所以需要谨慎操作。

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