处理方法中的多个异常

Jas*_*Cav 2 java methods exception-handling exception

我目前正致力于维护一段有点"异常快乐"的代码.基本上,任何方法或任何东西抛出异常.我将努力解决这个问题,但与此同时,我想知道在较小的代码块中处理个别异常的最佳方法是什么,例如方法.做这样的事情更好:

public void aMethod()
  try {
    //Lots of code in here.  Many lines.
  } catch(Exception e) {
    // TODO - Handle All Exceptions, but fairly generically
  }
}
Run Code Online (Sandbox Code Playgroud)

或类似的东西:

public void bMethod() {
  try {
    // One line of code.
  } catch(Exception e) {
    // TODO - Handle a specific Exception (may even involve rethrowing it with more information)
  }

  // More code.

  try {
    // Another line of code.
  } catch(Exception e) {
    // TODO - Handle another specific exception.
  }
}
Run Code Online (Sandbox Code Playgroud)

我意识到这是一个非常基本的问题,但是在查看了数百种带有异常的方法之后,我开始想知道如何最好地处理所有这些方法以及最佳实践可能在这里.

Rob*_*ner 6

首先,您应该只将代码放在try/catch块中,这是非常值得的.例如,具有意外值不一定是例外,但尝试从不存在的文件读取是.

要回答您的主要问题,您应该将异常代码放在同一个try {}块中,并在主要尝试后按多个catch块中的粒度顺序捕获特定问题.

//Regular code that doesn't need to be covered by a try/catch block

try {

  //critical code only

} catch (NullPointerException npe) {
  //Code
} catch (RandomException re) {
  //code
} catch (Exception e) {
  //code
}
Run Code Online (Sandbox Code Playgroud)