私の GWT クライアントではThrowable
、実装に渡されたCallback#onFailure()
が常に処理されるようにしようとしています。これは、この膨大なコード ベースの多くの実装がそれについて何もしていないためです。
これを行うために、独自の実装でRemoteServiceProxy#doCreateRequestCallback()
すべてをラップする独自の定義をしました。Callback
その#onFailure()
メソッドでは、独自のバージョンの a を使用して、Throwable
処理されるかどうかを追跡できるようにしたいと考えています。whenThrowable#getMessage()
が呼び出されるので、元の に渡しCallback#onFailure()
ます。
public class ThrowableProxy extends Throwable {
private Throwable delegate;
private boolean handled;
public ThrowableProxy(Throwable delegate) {
this.delegate = delegate;
this.handled = false;
}
// Overriding Throwable's methods to defer to the delegate
// package protected
boolean isHandled() {
return this.handled;
}
}
instanceofをヒットするまで、これはすべて問題ないように見えます。ここで、クライアントコードが例外のタイプをチェックしたい場合、たとえば. throwable instanceof StatusCodeException
、Throwable は のインスタンスですがThrowableProxy
、本当に必要なのはデリゲートの型を確認することです。
instanceofはどのように機能しますか? のようなことをせずにデリゲートをチェックさせることはできますthrowable.getDelegate() instanceof StatusCodeException
か?