java 判断exception类型_Checked Exception | Java语言设计者的失误?

本文探讨了Java中Checked Exception的背景、设计意图及其优缺点。设计者意在通过强制异常处理提高软件的可靠性和弹性,但这也导致了编码时的不便,如异常传播和处理的繁琐。反对者认为大多数异常无法恢复,不应强制处理。文章建议谨慎使用Checked Exception,避免生吞异常,注重错误信息的有效传递。现代编程语言趋势中,运行时异常更为常见,但Checked Exception在特定场景下仍有其价值。
摘要由CSDN通过智能技术生成

背景

最近公司一直在执行sonar扫描代码bug、漏洞及异味,但发现了很对异常处理的问题,大多数是对Java异常处理不正确导致的,那本文就谈谈Java的异常是什么?设计者的初衷又是什么?

Exception 介绍

ExceptionError都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。

ExceptionError体现了Java平台设计者对不同异常情况的分类。Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。

Error是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如虚拟机自身)处于非正常的、不可恢复状态。既然是不正常情况,所以不便于也不需要捕获,常见的比如OutOfMemoryError之类,都是Error的子类。

Exception异常本身又分为可检查(checkd)异常和不可检查(uncheckd)异常。

可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。不可检查的ErrorThrowable,而不是Exception,通常我在编码过程中编译器会提示如何处理异常,类似于我们常见的try catch或者继续throw

不检查异常就是所谓的运行时异常,类似NullPointerException、ArrayIndexOutOfBoundsException之类,通常是可以编码过程中避免的代码逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译期强制要求捕获此类异常。

争议点

Checkd Exception(可检查异常)一直都是Java语言比较有争议的一个功能。

Java可检查异常的提倡者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值