【发布时间】:2012-10-28 07:01:12
【问题描述】:
我是一名绿色开发人员,试图在大型多层 Java 应用程序中获得错误处理的句柄 (har-har)。在很多情况下,我认为通过多层链接异常是一个好主意。例如当在最低层调用某些外部服务失败导致视图一直出现问题时:
- 已请求内容 X,但用户未获得授权
- 原因:授权用户列表为空
- 原因:用户管理 web 服务响应错误请求 - 参数 foo 的格式必须类似于“xyz”
- 原因:授权用户列表为空
最重要的异常,我真正想检查的堆栈跟踪,是链中的最后一个;我提出了一个错误的请求,我需要修复 foo 的格式。但是当我让这个异常通过层冒泡时,很好地链接在对每一层有意义的异常中......当我最终捕获并记录这个东西时,默认的日志记录行为总是向我展示关于最外层异常的大量细节,并且可能是 5 行堆栈跟踪的根本原因。
这让我想在异常发生时记录它们,并让它们冒泡,但是你最终会记录大多数事情两次;它们何时发生以及何时最终被抓住。
这里的最佳做法是什么?
【问题讨论】:
-
对此会有很多意见,但没有“真相”。选择适合你的,无论你选择什么,人们都会不同意。 (我个人喜欢将东西重新扔到最外层并在那里记录)
标签: java exception logging error-handling