Java 数据报套接字“;必须被抓住或宣布被扔出去;

Java 数据报套接字“;必须被抓住或宣布被扔出去;,java,Java,以下代码正在生成错误 DatagramSocket socket = new DatagramSocket(); java.net.*包含在顶部 错误是未报告的异常java.net.SocketException;一定要被抓住,否则就被抓住 eclared将被抛出 它位于使用线程的类中的run()方法中 有什么想法吗?我建议您在try/catch块中捕获并记录它,或者将您的Runnable更改为Callable,这样可以抛出一个例外 顺便说一句:我会使用ExecutorService,而不是普

以下代码正在生成错误

DatagramSocket socket = new DatagramSocket();
java.net.*包含在顶部

错误是
未报告的异常java.net.SocketException;一定要被抓住,否则就被抓住
eclared将被抛出

它位于使用线程的类中的run()方法中


有什么想法吗?

我建议您在try/catch块中捕获并记录它,或者将您的Runnable更改为Callable,这样可以抛出一个例外


顺便说一句:我会使用ExecutorService,而不是普通线程,因为它允许您回收线程并更轻松地管理它们。

我建议您在try/catch块中捕获它并记录它,或者将Runnable更改为可调用的,这样可以引发例外


顺便说一句:我会使用ExecutorService,而不是普通线程,因为它允许您回收线程并更轻松地管理它们。

错误消息尽可能清楚。放入一个
catch
块:

try {
    DatagramSocket socket = new DatagramSocket();
    // ...
}
catch (SocketException ex)
{
     // ...
}
或者声明您在其中创建套接字的方法可能会引发
SocketException

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

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

错误信息尽可能清楚。放入一个
catch
块:

try {
    DatagramSocket socket = new DatagramSocket();
    // ...
}
catch (SocketException ex)
{
     // ...
}
或者声明您在其中创建套接字的方法可能会引发
SocketException

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

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

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

try {
   DatagramSocket socket = new DatagramSocket();

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

嗯,您没有捕获可能发生的SocketException

try {
   DatagramSocket socket = new DatagramSocket();

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