我不想抛出运行时异常。我总是用try-catch
块封闭我的代码。因此,如果有任何异常,它将立即被捕获。
我知道这不是一个好的编程习惯,但我很想知道采用这种方法是否会有任何性能问题?
答案 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块......