首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有必要设置试捕块吗?

有必要设置试捕块吗?
EN

Stack Overflow用户
提问于 2017-05-23 11:38:14
回答 2查看 2.3K关注 0票数 2

我开始学习Java,我对在中尝试捕获块的必要性感到困惑,有些情况下是

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

代码语言:javascript
复制
System.out.println(args[0]);

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

代码语言:javascript
复制
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Main.main ...

但是我想知道,如果输出与上面的相同,并且我也可以识别问题,那么为什么我需要一个带有e.printStackTrace()的尝试捕获块呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-23 11:47:50

试图捕获块的目的不是在它们上有一个简单的e.printStackTrace(),而是管理代码中可能出现的异常。

通过要求一个try-catch块,Java迫使您处理代码中可能发生的异常,并就如何处理它们作出决定,以便允许代码优雅地失败。

此外,如果您捕获带有捕获的异常,则代码可以在之后继续执行,如果未捕获异常,则不会发生这种情况。

票数 4
EN

Stack Overflow用户

发布于 2017-05-23 11:52:49

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

在您的情况下,由于ArrayIndexOutOfBoundsException是一个未经检查的异常,所以不必捕获它。但是,如果不处理它,您的应用程序就会崩溃。有时,您希望保存您的应用程序,以防出错,而在这种情况下,捕获异常是实现此目的的方法。例句:你问用户的网址,并尝试连接到它。如果URL无效,它将引发异常。但是,与其让应用程序崩溃,不如通知用户并请求一个新的URL。因此,您将捕获异常并执行错误处理。

基本上,做一个简单的e.printStackTrace()是一种糟糕的做法。在catch块上执行真正的错误处理或丢弃它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44133764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档