2011年5月7日土曜日

RtmpClientやApacheMinaの例外を補足する。

問題が発生したときにはtry-catchを利用して例外を補足しますが、フレームワークの内部でおこってしまうと補足できないことがあります。

そのときの対処の仕方:
RtmpClientの場合
org.red5.server.net.rtmp.ClientExceptionHandlerをimplementsしたクラスをつくって補足すればOK
ApacheMinaの場合
org.apache.mina.util.ExceptionMonitorを継承したクラスをつくって補足すればOK

というわけで両方補足するならこんなクラスになります。
public class ExceptionTest extends ExceptionMonitor implements ClientExceptionHandler {
  public void exceptionCaught(Throwable error) {
    error.printStackTrace(); // mina
  }
  public void handleException(Throwable error) {
    error.printStackTrace(); // rtmpClient
  }
}
これをつくってからセットします。
ExceptionTest et = new ExceptionTest();
ExceptionMonitor.setInstance(et); // mina
rtmpClient.setExceptionHandler(et); // rtmpClient

これでエラーの補足をして、いろいろ処理をすればOK
ちなみに問題を引き起こした部分の例外をとりたい場合は
error.getCause();
で取得すれば調べること可能です。

んで、これをなにに使うかといいますと
RtmpClientは接続ミス(接続先のサーバーがみつからない等)の時に例外を発行し、try-catchで拾えないというわけです。

0 件のコメント:

コメントを投稿