数据报套接字“必须被捕获或声明被抛出”

时间:2012-04-20 08:23:33

标签: java

以下代码产生错误

DatagramSocket socket = new DatagramSocket();

java.net。*包含在顶部

错误为unreported exception java.net.SocketException; must be caught or d eclared to be thrown

它在使用线程的类中的方法run()中。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我建议您在try / catch块中捕获并记录它,或者将Runnable更改为Callable< Void>这可能会让人感到兴奋。

BTW:我会使用ExecutorService而不是普通的Thread,因为它允许您回收线程并更轻松地管理它们。

答案 1 :(得分:2)

错误消息尽可能清晰。放入catch块:

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

或者声明您创建套接字的方法可能会抛出SocketException

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

Java检查了异常,这意味着编译器会为您监视这些事情。我不能说这是语言的一个很好的部分,但它是一个强制性的部分。

答案 2 :(得分:1)

好吧,你没有抓住可能发生的可能的SocketException

try {
   DatagramSocket socket = new DatagramSocket();

    } catch (SocketException e) {
        e.printStackTrace();
    }