gpt4 book ai didi

java - Java错误处理时,catch Exception应该捕获所有异常还是单独捕获异常?

转载 作者:行者123 更新时间:2023-11-29 09:43:43 26 4
gpt4 key购买 nike

假设我的代码会抛出许多不同的异常:

thisThrowsIllegalArgumentException("this is an illegal argument");
thisThrowsIOException("C:/Users/Admin/Documents/does-not-exist.txt");
thisThrowsIndexOutOfBoundsException(Integer.MAX_SIZE + 1);
thisThrowsNullPointerException(null);
...etc

这些错误需要处理。所以,我有两个选择。我可以:

单独捕获每个异常,如下所示:

try {
...
} catch (IllegalArgumentException ex) {
System.err.println("Something went wrong.");
} catch (IOException ex) {
System.err.println("Something went wrong.");
} catch (IndexOutOfBoundsException) {
System.err.println("Something went wrong.");
} catch (NullPointerException) {
System.err.println("Something went wrong.");
}

...或者捕捉一般的Exception,像这样:

try {
...
} catch (Exception ex) {
System.err.println("Something went wrong.");
}

我知道在 Java 7 中,你可以简单地写:

try {
...
} catch (IllegalArgumentException | IOException | IndexOutOfBoundsException | NullPointerException ex) {
System.err.println("Something went wrong.");
}

但是,我对 Java 6 有限制。

这方面的最佳做法是什么?

最佳答案

一般方法:

  • 如果 catch block 正在处理问题,则捕获尽可能窄的异常类
  • 如果调用者要处理问题,声明throws。您可能会捕获(仍然尽可能窄)并抛出特定于域的异常
  • 如果你不能处理问题,但是因为你的代码在调用栈的顶层,所以“没有调用者”,那么捕获异常,因为你的代码是采取行动的最后机会

关于java - Java错误处理时,catch Exception应该捕获所有异常还是单独捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23860527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com