首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >何时编写异常处理程序?

何时编写异常处理程序?
EN

Stack Overflow用户
提问于 2009-06-20 06:12:19
回答 10查看 748关注 0票数 4

在开发过程中,您通常在什么时候实现异常处理程序?您是在编写周围的代码的同时编写这些代码,还是编写代码,然后再回到“变硬”的状态?

我通常是这样做的,这样我才能准确地看到我的代码在哪里和如何失败,但是我担心如果我立即编写异常处理程序,我的代码就不会像它那样具有弹性。

同时,我不想花费大量的开发时间来找出当我还没有确定的其他实现细节时,我的代码可能会失败的所有可能方式。

我很好奇其他开发人员是如何做到这一点的。

更新:我只是想感谢大家的回答!

EN

Stack Overflow用户

回答已采纳

发布于 2009-06-20 06:34:38

我要么立即编写异常处理程序,要么允许异常向上传播。我是我所谓的“你不打算回去,以后再修正它,是吗?”原则。你说你会的,但老实说,一旦你把它修好了,你以后就不会回去修理它了,是吗?现在就去拿吧!立即编写异常处理程序,或添加throws子句,使其成为其他人的问题。现在就做正确的事。

但是你知道吗,有时候你做不到。不管你做什么,都不会吞下带有空异常处理程序的异常!这是邪恶的:

代码语言:javascript
运行
复制
try {
    connection.close();
}
catch (Exception e) {
    // TODO Auto-generated code
}

我把检查过的人踢到我的队伍里。

如果您真的不知道如何处理异常,并且不能添加throws子句来向上传播异常,那么至少要做一些负责任的事情。打印堆栈跟踪,如果没有其他的话。这并不理想,但至少你没有隐藏错误。

代码语言:javascript
运行
复制
catch (IOException exception) {
    exception.printStackTrace();
}

通过应用程序的日志系统记录它会更好,尽管你不应该养成它的习惯。处理这类事情应该是来电者的责任。

代码语言:javascript
运行
复制
catch (IOException exception) {
    log.error(exception, "Unable to open configuration file %s.", fileName);
}

作为最后的手段,您可以通过将异常包装在throws子句中,从而完成RuntimeException子句的结束运行。至少你给了呼叫链较高的人一个处理错误的机会,这通常是正确的做法。

代码语言:javascript
运行
复制
catch (IOException exception) {
    throw new RuntimeException(exception);
}
票数 6
EN
查看全部 10 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1021063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档