問題が発生したときには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 件のコメント:
コメントを投稿