是否有任何关键字或特殊语法的代码,如果我查看它,我会知道这里使用了未经检查的异常或正在使用已检查的异常?
通过阅读之前提出此问题的帖子,在我看来,知道它是检查还是未检查的唯一方法是查看异常是否正在扩展Exception或RuntimeException。
这真的是唯一知道的方法吗?因为我认为写入未经检查和检查异常的语法也应该是不同的,但我不确定要查找什么。
答案 0 :(得分:0)
来自Java文档。它说“类Exception和任何不属于RuntimeException子类的子类都是经过检查的异常。”所以你的回答是肯定的。但请记住,错误也是一种未经检查的异常。
如果方法或构造函数的throws子句可以通过执行方法或构造函数抛出并在方法或构造函数边界外传播,则需要在方法或构造函数的throws子句中声明。如果可以在Java中使用“isInstance()”函数查看特定异常是否属于某个类。在您的情况下,如果异常是RuntimeException。如果是,则取消选中,如果不是,则选中。
您还可以查找“java.lang.Object.getClass()”,它可以告诉您对象的确切运行时类。
我可以考虑另一种方式单独处理它们。您可以捕获RuntimeException和Error,然后捕获所有其他不是RuntimeException实例的异常。
答案 1 :(得分:-1)
在实践中,如果您希望程序中存在异常,并且您希望调用者处理它,则会使用已检查的异常。
e.g。
当您从FileSystem读取文件时,文件可能不存在,因此将抛出IOException
并且调用者必须通过try..catch
处理它。这样的例外只是程序的特殊流程,而且根本不是错误。
如果您认为根本不可能发生,则使用未经检查的异常。
e.g。
当您比较两个字符串a.equals(b)
时,您不希望a
为空,因此您不会检查是否会抛出NullPointerException
。如果它真的抛出了未经检查的异常,那么你的程序就会出现错误。