我目前正在维护一段有点“Exception Happy”的代码。基本上,任何方法或任何东西都会抛出异常。我将努力解决这个问题,但与此同时,我想知道在较小的代码块(例如方法)中处理单个异常的最佳方法是什么。这样做更好吗:
public void aMethod()
try {
//Lots of code in here. Many lines.
} catch(Exception e) {
// TODO - Handle All Exceptions, but fairly generically
}
}
或者像这样:
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.
}
}
我意识到这是一个非常基本的问题,但在查看了数百种方法后,每一种方法都会出现异常,我开始想知道如何最好地处理所有这些问题,以及这里可能有哪些最佳实践。
最佳答案
首先,您应该只将代码放在值得异常处理的 try/catch block 中。例如,具有意外值不一定是异常,但尝试从不存在的文件中读取是异常。
要回答您的主要问题,您应该将异常代码放在同一个 try {} block 中,并在主要 try 之后在多个 catch block 中按粒度顺序捕获特定问题。
//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
}
关于java - 在一个方法中处理多个异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1835788/