gpt4 book ai didi

java - 抛出一长串异常与抛出异常与抛出自定义异常?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:22 24 4
gpt4 key购买 nike

我有一个使用 API 的两种方法的应用程序。这两种方法都抛出超过五个异常。所以,如果我只是添加一个 throws 声明,那么它就会变成一个包含十多个的列表。 (我的方法无法处理十个异常中的任何一个)

我读到过抛出一长串异常是一种不好的做法。抛出(雨伞)Exception 也是一种不好的做法。所以我该怎么做?

  1. 添加try catch block ,并在catch block 中登录退出?
  2. 创建自定义异常类,包装每个异常并抛出自定义异常?
  3. 为所有异常添加抛出声明?
  4. 抛出异常?
  5. 添加一个 try catch block ,并在 catch block 中抛出 RuntimeException? (当前方法)

编辑:添加了选项 5。

最佳答案

“2. 创建自定义异常类”,但不是针对所有的。将异常包装在逻辑组中。例如,您可以拥有 XmlWritingExceptionPaymentGatewayExceptionDataAccessException,它们根据场景包装不同的异常。

甚至可以(并且首选)将相同的异常包装在不同的包装器中。例如,如果由于通信问题支付失败,您可以将 IOException 包装在 PaymentGatewayException 中,但如果在某些 i/o 期间失败,您可以将其包装在 XmlWritingException 中用xml操作。所有这些示例都是假设的,但您明白了。

最重要的是 - 将原始异常设置为新异常的原因,这样它就不会丢失。

更新:事实上,如果您不能指望客户端从异常中合理恢复,选项 5 就可以了。更好的是 - 您创建的自定义异常可以扩展 RuntimeException。这就是 spring 所做的,例如,将所有与数据相关的异常包装在 DataAccessException 中。 .

关于java - 抛出一长串异常与抛出异常与抛出自定义异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4520288/

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