【发布时间】:2017-11-16 08:51:01
【问题描述】:
来自 PHP 世界,那里只有一种编写异常处理的方法。我发现 Java 中的异常包装有点“丑陋”:
public void exampleOneException(String input) throws MyBusinessException {
try {
// do something
} catch (NumberFormatException e) {
throw new MyBusinessException("Error...", e);
}
}
我更喜欢使用这种风格:
public void exampleTwoException() {
try {
// do something
} catch (MyBusinessException e) {
log.error("Error...: " + e);
} catch (NumberFormatException e) {
log.error("Error...: " + e);
}
}
这些处理异常的方法有什么不同或最佳实践吗?
【问题讨论】:
-
调用
exampleOneException的方法可以捕捉到MyBusinessException,根据自己的需求进行处理。调用exampleTwoException的方法无法知道发生了什么问题。 -
它们在做完全不同的事情。您应该使用的方法取决于您希望如何响应错误 - 例如只需在本地记录它们、转发它们,或在发生错误时更改行为的专用业务逻辑。
-
这两个代码 sn-ps 没有做同样的事情。在一个中,您正在重新抛出异常,而在另一个中,您只是在记录它。
标签: java exception exception-handling software-quality