更好的处理异常的方法

时间:2017-06-27 07:25:27

标签: java exception-handling

说,我有一个可以抛出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个。

这被认为是更好的方法吗?

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.
    }
}