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> ,它可以抛出一个 excaption。

顺便说一句:我会使用 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 回答