我开始学习Java,我对在中尝试捕获块的必要性感到困惑,有些情况下是。
假设我的代码中有以下内容:
System.out.println(args[0]);如果我没有任何参数,我会得到以下错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Main.main ...但是我想知道,如果输出与上面的相同,并且我也可以识别问题,那么为什么我需要一个带有e.printStackTrace()的尝试捕获块呢?
发布于 2017-05-23 11:47:50
试图捕获块的目的不是在它们上有一个简单的e.printStackTrace(),而是管理代码中可能出现的异常。
通过要求一个try-catch块,Java迫使您处理代码中可能发生的异常,并就如何处理它们作出决定,以便允许代码优雅地失败。
此外,如果您捕获带有捕获的异常,则代码可以在之后继续执行,如果未捕获异常,则不会发生这种情况。
发布于 2017-05-23 11:52:49
没有必要捕获所有的异常。在Java中,有两种类型的异常:检查和未检查。规则很简单--检查异常必须由调用方处理,而未经检查的异常可以通过不捕获异常或捕获异常来处理。
在您的情况下,由于ArrayIndexOutOfBoundsException是一个未经检查的异常,所以不必捕获它。但是,如果不处理它,您的应用程序就会崩溃。有时,您希望保存您的应用程序,以防出错,而在这种情况下,捕获异常是实现此目的的方法。例句:你问用户的网址,并尝试连接到它。如果URL无效,它将引发异常。但是,与其让应用程序崩溃,不如通知用户并请求一个新的URL。因此,您将捕获异常并执行错误处理。
基本上,做一个简单的e.printStackTrace()是一种糟糕的做法。在catch块上执行真正的错误处理或丢弃它。
https://stackoverflow.com/questions/44133764
复制相似问题