java.lang.RuntimeException 和 java.lang.Exception 的区别

新手上路,请多包涵

有人请解释 java.lang.RuntimeExceptionjava.lang.Exception 之间的区别?如果我创建自己的异常,我如何决定扩展哪一个?

原文由 cchampion 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 388
2 个回答

通常 RuntimeExceptions 是可以通过编程方式阻止的 异常。例如 NullPointerException , ArrayIndexOutOfBoundException 。如果您在调用任何方法之前检查 null ,则永远不会发生 NullPointerException 。同样 ArrayIndexOutOfBoundException 如果您先检查索引,则永远不会发生。 RuntimeException 没有被编译器检查,所以它是干净的代码。

编辑:现在人们喜欢 RuntimeException 因为它产生的干净代码。这完全是个人选择。

原文由 fastcodejava 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 Java 中,有两种类型的异常:已检查异常和未检查异常。已检查的异常必须由代码显式处理,而未检查的异常则不需要显式处理。

对于已检查的异常,您要么必须在可能抛出异常的代码周围放置一个 try/catch 块,要么在方法中添加“throws”子句,以指示该方法可能抛出此类异常(必须是在调用类或以上处理)。

派生自“Exception”的任何异常都是已检查的异常,而派生自 RuntimeException 的类是未检查的。 RuntimeExceptions 不需要由调用代码显式处理。

原文由 Andy White 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题