【问题标题】:API design: Adding a new exception type - is it safe?API 设计:添加新的异常类型——安全吗?
【发布时间】:2009-08-20 10:42:40
【问题描述】:

我需要更改现有服务 API 以针对某个场景引发额外的异常。该异常将是已抛出异常的子类型。这样做可以吗,还是会被视为向后不兼容?

我有一个单独的 jar 中的接口,所以如果我的服务抛出这个新异常,它是已经抛出的一个子异常并且客户端没有新 jar,它会破坏客户端还是他能够仍然像以前一样捕获父异常?

问题是我们有一个非常通用的异常,每个异常情况都会抛出,一些客户端想要更好的方法来识别异常 - 除了解析异常中的消息,但如果我们引入,并非所有客户端都可以升级接口一个新的例外 - 如何最好地处理这种情况?

谢谢 阿文德

【问题讨论】:

    标签: api exception backwards-compatibility


    【解决方案1】:

    由于新异常是现有异常的子类型,因此您不应破坏任何现有代码。如果客户端代码捕获基本异常,它将捕获您的新异常。

    然后您可以重构客户端代码以捕获更新的更具体的异常。

    【讨论】:

    • 我认为如果新的子类型对象不在客户端的 jar 中,他会得到 ClassNotFoundException 或类似的东西
    • @Arvind - 测试这类事情的最佳方法是设置一个测试应用程序并在那里进行编辑以查看会发生什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    相关资源
    最近更新 更多