gpt4 book ai didi

java - Java EE 5 Web 应用程序中的异常处理指南

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:40 25 4
gpt4 key购买 nike

令我惊讶的是,在网络上找到这方面的最佳实践是多么困难,因为这肯定是一个常见问题。

应用程序基于 Java 1.5 – JSF 1.2,带有 Faclets、Seam、JPA、Hibernate。一些 Web 服务调用。一些 JMS。

我正在寻求异常处理的一般建议。我见过大约有 3 种方法,但我一直不确定哪一种更好。假设您无法从错误中恢复,您会:1) 发生错误时记录并重新抛出?
2)当它发生时记录它并抛出某种通用异常?
3) 让它冒泡,然后在通用异常处理 servlet 或类似的中处理它。

我倾向于在以前的系统上使用选项 2,这些系统的架构相当简单 - 与各种第 3 方系统通信的适配器层如果返回错误,则会抛出适配器异常,等等。我们可以在屏幕上向用户显示一条简洁的消息,并将详细信息保存在日志中。尽管这里的架构要复杂得多,但我想知道它在实践中的效果如何。所以我很想知道您喜欢什么以及为什么。

最佳答案

Assuming you can’t recover from an error...

假设此错误不是功能错误,我会记录错误并将异常包装在(自定义)未经检查的异常中,并让框架/容器处理它(因此选项 2)。我喜欢按照他的方式做,因为:

  • 我喜欢使用容器管理的事务,并且希望容器完成其工作(即回滚任何事务),因此抛出运行时异常是正确的方法。
  • 它最大限度地减少了异常处理工作。
  • 它使向用户提供的报告易于以通用方式处理。

如果是功能错误(即用例中的替代流程),我会记录错误并将异常包装在(自定义)检查的异常中,因为我希望调用者专门处理它,因为问题是用例的一部分。

在这两种情况下,我都为每个层次结构使用根异常,即 TechnicalExceptionFunctionalException

关于java - Java EE 5 Web 应用程序中的异常处理指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com