【发布时间】:2019-10-01 17:20:06
【问题描述】:
我有一个关于在使用另一种可能引发异常的方法的方法中捕获异常的问题。
public void methodA(File file) {
try {
}
catch (IOException ex) {
}
}
public void methodB() {
// do something with the file
File file = new File("/example.txt");
methodA(file);
}
我需要在 methodB 中创建一个 try 和 catch 块吗?或者在methodA内部捕获IOException这种情况下的异常就足够了?
【问题讨论】:
-
methodA不会抛出任何异常,因此methodB没有什么可以捕获的。 -
我不知道哪个方法实际上正在做一些会从上面的代码中引发 IOException 的事情。基本上,规则是:低级方法应该声明它们抛出异常而不是试图捕获它们。在最高级别处理异常。所以如果
a调用b调用c和c做了一些可能引发异常的事情,不要在c或b处理它(通常),在a处理它。 -
您可以在
methodA中做任何事情,但您希望methodB 继续,即使methodA发生了异常?如果不是,你可能不应该处理methodA中的IOException,而是声明它抛出一个异常并在methodB中通过类似的逻辑处理它,如果你不能处理methodB中的异常,则声明它抛出。跨度>
标签: java