在开发过程中,您通常在什么时候实现异常处理程序?您是在编写周围的代码的同时编写这些代码,还是编写代码,然后再回到“变硬”的状态?
我通常是这样做的,这样我才能准确地看到我的代码在哪里和如何失败,但是我担心如果我立即编写异常处理程序,我的代码就不会像它那样具有弹性。
同时,我不想花费大量的开发时间来找出当我还没有确定的其他实现细节时,我的代码可能会失败的所有可能方式。
我很好奇其他开发人员是如何做到这一点的。
更新:我只是想感谢大家的回答!
发布于 2009-06-20 06:34:38
我要么立即编写异常处理程序,要么允许异常向上传播。我是我所谓的“你不打算回去,以后再修正它,是吗?”原则。你说你会的,但老实说,一旦你把它修好了,你以后就不会回去修理它了,是吗?现在就去拿吧!立即编写异常处理程序,或添加throws子句,使其成为其他人的问题。现在就做正确的事。
但是你知道吗,有时候你做不到。不管你做什么,都不会吞下带有空异常处理程序的异常!这是邪恶的:
try {
    connection.close();
}
catch (Exception e) {
    // TODO Auto-generated code
}我把检查过的人踢到我的队伍里。
如果您真的不知道如何处理异常,并且不能添加throws子句来向上传播异常,那么至少要做一些负责任的事情。打印堆栈跟踪,如果没有其他的话。这并不理想,但至少你没有隐藏错误。
catch (IOException exception) {
    exception.printStackTrace();
}通过应用程序的日志系统记录它会更好,尽管你不应该养成它的习惯。处理这类事情应该是来电者的责任。
catch (IOException exception) {
    log.error(exception, "Unable to open configuration file %s.", fileName);
}作为最后的手段,您可以通过将异常包装在throws子句中,从而完成RuntimeException子句的结束运行。至少你给了呼叫链较高的人一个处理错误的机会,这通常是正确的做法。
catch (IOException exception) {
    throw new RuntimeException(exception);
}https://stackoverflow.com/questions/1021063
复制相似问题