1
@AutoValue
public abstract class MyError extends Throwable {

    public static MyError create(
            Throwable ex,
            MyErrorCode errorCode) {
        return new AutoValue_MyError(ex, errorCode);
    }

    public abstract Throwable getError();

    public abstract MyErrorCode myErrorCode();
}

AutoValue用来创建MyError类,问题是如何super(ex.getCause())传递实际上下文。看起来生成的实现没有这样做。

4

1 回答 1

0

HAS-A 关系优于 IS-A 关系。所以 MyError 类不应该扩展 Throwable 类。

我想我们不能打电话super(ex.getCause())

AutoValue 使用 Builder 模式创建不可变对象。请参阅Github 自动存储库 getError()方法将返回Throwable对象的问题,然后您可以getClause()在其上调用方法。

于 2017-07-13T06:21:14.680 回答