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