虽然我在程序员应该考虑捕获RuntimeExceptions时有时间编程吗?
答案 0 :(得分:8)
您捕获RuntimeException的原因与捕获任何异常的原因相同:您打算使用它执行某些操作。也许你可以纠正导致异常的任何事情。也许您只想重新使用不同的异常类型。
然而,捕获并忽略任何异常都是非常糟糕的做法。
答案 1 :(得分:2)
这是我能想到的。
答案 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
。如果适用于您的程序,您可以捕获此异常并以某种方式恢复,例如通过尝试不同的输入,或向用户解释为什么操作无法继续。