1

エラーjava.net.SocketExceptionが時々発生するプログラムがあります。エラーに「対処」するために、このエラーが発生した場合 (およびその場合にのみ)、クライアント プログラムにコードを実行させる方法はありますか? 完全なエラーは

java.net.SocketException: Software caused connection abort: socket write error

今持っているものをまとめておきます。

public void run()  {
    try {
        //some code that causes the SocketException 
    }

    catch (SocketException e) {
    System.out.println("I recognize the SocketException");
    }
}

ただし、エラーにもかかわらず、行はまだ印刷されません。

ここに完全なエラーがあります

java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at java.io.ObjectOutputStream$BlockDataOutputStream.drain(Unknown Source)
    at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Unknown Source)  
    at java.io.ObjectOutputStream.writeNonProxyDesc(Unknown Source)
    at java.io.ObjectOutputStream.writeClassDesc(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.writeFatalException(Unknown Source)
    at java.io.ObjectOutputStream.writeObject(Unknown Source)
    at (...).java:61)
    at (...).java:164)
4

1 に答える 1

1

クライアントまたはサーバーのどちらが例外をスローしたかによって異なります。

いずれにせよ、コードの周りに try-catch ブロックを追加できるはずです。

try {
   //code
} catch (SocketException e) {
   // Handle the error
}

サーバーがエラーをスローしていて、クライアントに状況を処理させたい場合、クライアントは接続が失われたために例外をスローする必要があります (この例外は次のようになります)。または、サーバーがエラーをスローしてもクラッシュしない場合は、エラーが発生したというシグナルをサーバーからクライアントに送信するだけです。

いずれにせよ、もう少し情報があれば、より良い回答を提供できます。

于 2013-07-31T19:50:07.000 に答える