2012-04-20 95 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(); 
    } 
相關問題