何时在代码中捕获RuntimeExceptions?

时间:2012-07-16 14:54:43

标签: java exception exception-handling

虽然我在程序员应该考虑捕获RuntimeExceptions时有时间编程吗?

5 个答案:

答案 0 :(得分:8)

您捕获RuntimeException的原因与捕获任何异常的原因相同:您打算使用它执行某些操作。也许你可以纠正导致异常的任何事情。也许您只想重新使用不同的异常类型。

然而,捕获并忽略任何异常都是非常糟糕的做法。

答案 1 :(得分:2)

这是我能想到的。

  1. 如果您希望向最终用户显示一条好消息以防出现问题,请抓住 RuntimeException 并进行记录。然后在屏幕上显示一些不错的信息而不是爆破错误。
  2. 将特定于框架的 CheckedExceptions 包装到特定于应用程序的 RuntimeExceptions 。我们首选使用 RuntimeException 作为您的自定义异常{{ 3}}。

答案 2 :(得分:0)

如果想要向用户显示自定义消息,则根据用户验证,然后转到RuntimeException

将您的自定义消息包装然后扔掉。

throw new RuntimeException("Invalid userName/Password !");

答案 3 :(得分:0)

基本上,只有当你不能允许你的应用程序爆炸时,你唯一想要抓住它的时间。 This is a good article更详细地描述了这一点,但这里有一个总结起来的引用:

"If a client can reasonably be expected to recover from an exception, make it a 
checked exception. If a client cannot do anything to recover from the exception,
make it an unchecked exception".  

由于未经检查的异常基本上只是代码中的错误,并且实际上只应抛出无法对它们执行任何操作的情况,所以您希望捕获的唯一实时是当您不能允许您的应用程序时爆炸。

答案 4 :(得分:-1)

是的:只要你能够并想要从中恢复。

许多常见的例外都是从RuntimeException继承而来,根据具体情况,每个例外可能会或可能不会被恢复。 RuntimeException类本身并不意味着必须或不能捕获异常。

例如,您可能有一个库方法会在某些输入上抛出IllegalArgumentException。如果适用于您的程序,您可以捕获此异常并以某种方式恢复,例如通过尝试不同的输入,或向用户解释为什么操作无法继续。