Re:Flash Remoing FaultクラスとJava例外クラス

S2OpenAMFでExceptionを扱う時にFlashのFaultクラスのプロパティは全部調べたので書いてみます。簡単に言うとFaultクラスのプロパティは、Exceptionクラスのプロパティがマッピングされているだけです。

  • faultcode
    発生したExceptionにgetCodeメソッドがある場合その値、無ければ"SERVER.PROCESSING"という文字列。
  • faultstring, description
    発生したExceptionにgetDescriptionメソッドがあればその値、無ければgetMessageメソッドの値。
  • type
    exception.getClass().getName()

faultstringとdescriptionは厳密に言うと違うものなんですけど、それはFlash側のFaultクラスを見てくださいという事で(^^;。descriptionが設定されていない場合faultstringから内容が生成されます。

faultcodeだけ少し詳しく説明してみると、OpenAMFのServiceInvokerで発生したExceptionオブジェクトにgetCodeメソッドがあると、その"文字列"が返されます。getCodeメソッドが無い場合、"SERVER.PROCESSING"という文字列が返されます。getCode/setCodeというメソッドを持った独自のExceptionをthrowした場合にサーバで指定した値がFlashで受け取れるというもんです。

ちなみにFaultクラスはダイナミックオブジェクトなので、サーバサイドで自由自在にプロパティの追加ができてしまいます。エラー発生時にサーバが設定した自由自在なオブジェクトを受け取るなんてこともできますが、Flash Remotingの仕様からははずれます。そう、仕様を無視してAMFをいじり倒せばなんでもできるような気がします(笑)。