什么是抛出Runtime Exception的必要性

时间:2014-02-19 06:35:53

标签: java performance exception

我不想抛出运行时异常。我总是用try-catch块封闭我的代码。因此,如果有任何异常,它将立即被捕获。

我知道这不是一个好的编程习惯,但我很想知道采用这种方法是否会有任何性能问题?

2 个答案:

答案 0 :(得分:1)

嗯,这取决于 - 主要取决于您的应用程序正在做什么,以及可能出现的运行时故障。

让我们将运行时异常分为两个桶:我们可以从中恢复的那些,以及我们不应该从中恢复的那些。

首先,如果你有一个如下所示的方法:

public boolean validateInteger(Integer value) {
    return value > 0;
}

...然后您会注意到NullPointerException value null可能会出现Integer value = null; try { boolean result = validateInteger(value); } catch (RuntimeException e) { e.printStackTrace(); } 。这意味着你有不良数据进入并以不恰当的方式处理它。

天堂帮助你,如果你这样做:

Formatter formatter = new Formatter();
Date date = new Date();
System.out.println(formatter.format(userProvidedFormat, date);

您正在做的是忽略错误输入而不是检查边界。这可能导致大量错误和逻辑错误。我们不应该继续这个错误。

另一方面,如果您可以从某些灾难性的“Java无法继续”错误中恢复,那么这样做是安全的。

使用用于解析日期的标准格式化程序,允许用户指定自己的格式。

{{1}}
如果他们弄乱格式,这可能会真实地爆发。为什么我们要阻止所有内容而不是要求用户提供其他格式?这是我们可以从中恢复的错误。

这也为已检查异常的概念增加了一点 - API确实认为您获得的异常状态是可恢复的,因此您从中恢复。

答案 1 :(得分:-1)

有时你会得到不是因为你的代码/方法的异常...假设父方法(调用者)传递了一个无效的参数而你尝试使用它,你会得到一个例外......现在,既然如此它是负责错误的父级,只有它应该处理它..不是你的方法......如果异常仅由你的代码引起,那么你可以有一个try-catch块......