微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在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的测试是冗余的).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐