说,我有一个可以抛出3种异常e1,e2和e3的函数。因此,在此函数中有两种处理异常的方法。哪种方式更好,为什么?例如: -
public void func() {
block1 starts
block1 ends
e1 can thrown from block1
block2 starts
block2 ends
e2 can thrown from block2
block3 starts
block3 ends
e3 can thrown from block3
}
所以,现在我可以通过两种方式处理异常: - 1.为3个不同的块放置3个不同的try catch。 2.对所有3个块进行一次尝试,并为每个例外捕获3个。
这被认为是更好的方法吗?
答案 0 :(得分:1)
这取决于Exception
的效果。
try-catch
块中。因此,如果发生一个异常,那么您可以执行不受此异常影响的代码行。try-catch
块中,以提高可见性和可读性。通过这样做,您可以删除额外的try-catch
块。另外,您需要创建嵌套的try-catch
块和更复杂的逻辑(因为在这种情况下您必须停止进一步执行)。答案 1 :(得分:0)
如果你想以不同的方式处理每个异常,那么去多个catch但是如果你想捕获异常只是为了打印stacktrace并继续执行,那么去catch有多个异常。
答案 2 :(得分:0)
这样的事情将是最灵活的:
public void block1() throws e1 {
try {
...
} catch (e12) {
throw new e1(e12);
}
}
public void block2() throws e2 {
similar to block1
}
public void block3() throws e3 {
similar to block1
}
public void func() {
try {
block1();
block2();
block3();
} catch (stuff) {
stuff if you need it.
}
}