2012-04-20 59 views
0

下面的代码产生误差数据报套接字“必须捕获或声明被抛出”

DatagramSocket socket = new DatagramSocket(); 

的java.net。*被包括在顶部

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

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

任何想法?

+0

安置自己确切的代码 – Vaandu 2012-04-20 08:26:59

回答

2

我建议你在try/catch块中抓住它并记录下来,或者将你的Runnable改为可调用的Void>,这可能会引起注意。

BTW:因为它可以让你回收你的线程和管理它们更容易,我会用一个ExecutorService而不是一个普通的主题。

+0

+1正确的金钱,尤其是1337'赎回'可能SocketException – Bohemian 2012-04-20 08:29:33

2

错误消息是明确的,因为它都不可能。要么把在catch块:

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

或者宣布你正在创建罐头插座的方法可能抛出SocketException

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

Java已经检查异常,这意味着编译器手表这些东西给你。我不能说这是语言的一个很好的部分,但它是一个强制性的部分。

1

好了,你不要再追可能出现的

try { 
    DatagramSocket socket = new DatagramSocket(); 

    } catch (SocketException e) { 
     e.printStackTrace(); 
    } 
相关问题