java - 将数据存储在自定义检查异常中是一个坏主意吗?

标签 java exception

我有一个用例,我想在抛出异常时返回一些数据(对象)。我正在考虑将数据存储在我的自定义检查异常类中,并在异常在堆栈中的较高位置捕获时通过 getter 访问它。这被认为是一个坏主意吗?如果是这样,有哪些更好的选择?我已经看到向自定义异常发送相关消息,但还没有真正看到它被用作数据存储。

我确实偶然发现了Return a value AND throw an exception?答案之一是做类似的事情。我更多地考虑重载构造函数并提供对象,而不是将其作为另一个参数传递。这被认为是不好的编码实践吗?

  public class NameException extends Exception
{

    private static final long serialVersionUID = -4983060448714460116L;
    private Service externalService;


    public NameException(final String message)
    {
        super(message);
    }

    public NameException()
    {
    }

    public NameException(Service externalService)
    {
        this.externalService =externalService;
    }

    public Service getExternalService()
    {
      return externalService;
    }
}

最佳答案

这是一个既定的模式。

例如,Spring 的 RestTemplate 的 HTTP 请求方法可能会抛出 RestClientResponseException,其中包含 byte[] getResponseBodyAsByteArray() 等方法, String getResponseBodyAsString(), HttpHeaders getResponseHeaders()String getStatusText() 等等。

关于java - 将数据存储在自定义检查异常中是一个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46833534/

相关文章:

java - 是否可以在 Hibernate 中通过 OneToOne 关系映射父类(super class)和子类?

java - 如何在 Apache 中禁用来自 mod_jk 代理应用程序服务器的某些响应 header 的压缩

异常处理架构

android - 更新后java.nio.file.InvalidPathException

java - Tomcat 7 上的 RESTEasy CDI 部署异常

c++ - 错误 : cannot dynamic_cast . ..(目标不是指针或引用)

java - 比较两个对象,其中一个可能为空

java 。为什么这个for循环不能正常工作

android - ArrayIndexOutOfBoundsException 与 ListView 中的多个 View 的自定义 Android 适配器

java - 共享进程/线程