0

次のコードはエラーを生成しています

DatagramSocket socket = new DatagramSocket();

java.net。*が上部に含まれています

エラーはunreported exception java.net.SocketException; must be caught or d eclared to be thrown

これは、スレッドを使用するクラスのメソッドrun()にあります。

何か案は?

4

3 に答える 3

2

try/catch ブロックでキャッチしてログに記録するか、Runnable を例外をスローできる Callable<Void> に変更することをお勧めします。

ところで:スレッドをリサイクルして管理しやすくするため、普通のスレッドではなく ExecutorService を使用します。

于 2012-04-20T08:27:35.950 に答える
2

エラーメッセージは可能な限り明確です。ブロックに入れcatchます:

try {
    DatagramSocket socket = new DatagramSocket();
    // ...
}
catch (SocketException ex)
{
     // ...
}

または、ソケットを作成しているメソッドが次をスローできる可能性があることを宣言しますSocketException

void foo() throws SocketException
{
    DatagramSocket socket = new DatagramSocket();
    // ...
}

Java は例外をチェックしました。これは、コンパイラがこれらのことを監視していることを意味します。言語の良い部分とは言えませんが、必須の部分です。

于 2012-04-20T08:27:44.480 に答える
1

まあ、発生する可能性のある SocketException をキャッチしていません

try {
   DatagramSocket socket = new DatagramSocket();

    } catch (SocketException e) {
        e.printStackTrace();
    }
于 2012-04-20T08:28:02.480 に答える