java 如何识别_如何在java中识别已检查和未检查的异常?

检查除

java.lang.RuntimeException或java.lang.Error的子类之外的所有Throwables.适当地说,在

Java中,“异常”是java.lang.Exception的子类,“errors”是java.lang.Error和java.lang的子类.Throwable通常不会直接进行子类化.

程序不应该创建自己的错误子类(尽管文档相当模糊),所以通常你总是创建异常,如果你不想检查它,使用RuntimeException.

要知道在运行时,如果你有一个被检查的例外,你可以使用:

if(throwable instanceof Exception && !(throwable instanceof RuntimeException)) {

// this is a checked Exception

}

检查的异常是必须在catch子句中处理的或被声明为在方法签名中抛出的异常;编译器强制执行此操作.一般来说,一个使用检查异常的例外,应该由调用代码处理异常,而未检查的异常是由于编程错误导致的条件,应通过更正代码来修复.

那就是说Java社区里有很多关于使用被检查的异常和无处不在的异常的有效性的争论 – 这个答案深入讨论的主题.

编辑2012-10-23:为了回应评论(这是相当有效的),为了澄清,以下是确定捕获的Throwable是否是被检查的Throwable而不是检查的异常所需要的:

if(obj instanceof Throwable && !(obj instanceof RuntimeException) && !(obj instanceof Error)) {

// this is a checked Throwable - i.e. Throwable,but not RuntimeException or Error

}

如果所讨论的对象是Throwable的实例(例如被捕获),则只需要上述’if’的第二部分(例如,Throwable的测试是冗余的).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值