有人请解释 java.lang.RuntimeException
和 java.lang.Exception
之间的区别?如果我创建自己的异常,我如何决定扩展哪一个?
原文由 cchampion 发布,翻译遵循 CC BY-SA 4.0 许可协议
有人请解释 java.lang.RuntimeException
和 java.lang.Exception
之间的区别?如果我创建自己的异常,我如何决定扩展哪一个?
原文由 cchampion 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Java 中,有两种类型的异常:已检查异常和未检查异常。已检查的异常必须由代码显式处理,而未检查的异常则不需要显式处理。
对于已检查的异常,您要么必须在可能抛出异常的代码周围放置一个 try/catch 块,要么在方法中添加“throws”子句,以指示该方法可能抛出此类异常(必须是在调用类或以上处理)。
派生自“Exception”的任何异常都是已检查的异常,而派生自 RuntimeException 的类是未检查的。 RuntimeExceptions 不需要由调用代码显式处理。
原文由 Andy White 发布,翻译遵循 CC BY-SA 2.5 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
通常 RuntimeExceptions 是可以通过编程方式阻止的 异常。例如
NullPointerException
,ArrayIndexOutOfBoundException
。如果您在调用任何方法之前检查null
,则永远不会发生NullPointerException
。同样ArrayIndexOutOfBoundException
如果您先检查索引,则永远不会发生。RuntimeException
没有被编译器检查,所以它是干净的代码。编辑:现在人们喜欢
RuntimeException
因为它产生的干净代码。这完全是个人选择。