このコードではまれにNullPointerExceptionが発生しています。これは、複数のRTSPストリームを同時に消費するビデオストリーミングアプリケーションの一部であり、定期的に(つまりユーザーに基づいて)接続を解除して再接続します。Socket.getInputStream()からNullPointerExceptionがスローされました
private void openSocket() throws IOException {
rtspSocket = new Socket();
rtspSocket.connect(new InetSocketAddress(ip, port), connectionTimeout);
rtspSocket.setSoTimeout(readTimeout);
// NullPointerException on next line
bufStream = new BufferedInputStream(rtspSocket.getInputStream());
}
次のようにスタックトレースは次のとおりです。
私のGoogleの-FUはthis bug from Apr 2000とthis bug from Nov 1997をプルアップしていますが、私は、彼らが適用されます確信していないです。私はビルドしているJDK 1.6 update 7のコードを彷彿とさせましたが、に含まれているFileDescriptor
がnullの場合にのみ、この例外が発生することに気付きました。この値は、SocketInputStream
コンストラクタからFileInputStream
コンストラクタに渡されます。
NPEをキャッチしてIOExceptionをスローするのは簡単ではありませんが、ここでできることはありますか?私の疑惑は、FileDescriptorをnullに設定する何らかのIOExceptionが原因であるということです。代わりにIOExceptionがスローされた方がずっと簡単です!
JMFを使用していないことを除いて、関連性があるようです。私はこの動作のJDKに関するバグレポートを見つけることができません。これは修正されていないことを示唆しています。バグ評価は、NPEをキャッチすることを示唆しているので、これが私の最良の選択です。 – Bringer128