是否需要try-catch块?

时间:2017-05-23 11:38:14

标签: java exception-handling try-catch

我开始学习Java,我对某些情况中try-catch块的必要性感到困惑。

假设我的代码中包含以下内容:

System.out.println(args[0]);

如果我没有任何参数,我会收到以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Main.main ...

但是我想知道为什么我需要一个带有e.printStackTrace()的try-catch块,如果输出与上面的相同,我也可以找出问题?

2 个答案:

答案 0 :(得分:2)

try-catch块的目的不是要对它们有一个简单的e.printStackTrace(),而是为了管理其中代码的可能异常。

通过要求try-catch块,Java迫使您处理代码中可能发生的异常,并决定如何处理它们,以便让代码正常失败。

此外,如果使用catch捕获异常,代码可以继续执行,如果未捕获异常则不会执行。

答案 1 :(得分:2)

没有必要捕获所有异常。在Java中有两种类型的例外:已选中和未选中。规则很简单,调用者必须处理已检查的异常,而未经检查的异常可以通过不捕获或捕获它来处理。

在您的情况下,由于ArrayIndexOutOfBoundsException是未经检查的例外情况,因此您不必抓住它。但是,如果未处理,您的应用程序将崩溃。有时您希望在出现错误时保存您的应用程序,在这种情况下,捕获异常就是这样做的方法。例如:您询问用户的网址并尝试连接到该网址。如果URL无效,则会引发异常。但是,您可能希望通知用户并询问新的URL,而不是让您的应用程序崩溃。因此,您将捕获异常并执行错误处理。

基本上,做一个简单的e.printStackTrace()是一种不好的做法。在catch块上进行真正的错误处理或将其丢弃。