2010-10-07 126 views
1

有什麼不對的代碼未報告的異常java.io.IOException的

import java.io.IOException; 
import java.net.ServerSocket; 
import java.net.Socket; 

/** 
* 
* @author Master 
*/ 
public class Server { 
    try 
    { 
    ServerSocket S = new ServerSocket(3333); 
    Socket So = S.accept(); 
    } 
    catch(IOException e) 
    { 
     System.out.println("IOError"); 
    } 

} 

首先我寫的代碼,而不嘗試捕捉,我得到了一個unreported exception java.io.IOException; must be caught or declared to be thrown錯誤,但Netbeans的不建議我將一個try-catch塊。現在我手動添加了try-catch塊,但它仍然顯示錯誤,並建議我必須添加另一個try-catch塊!

alt text

+0

它編譯/運行?也許IDE錯誤。 – MStodd 2010-10-07 19:17:23

+1

你沒有任何方法的代碼... – MStodd 2010-10-07 19:17:53

回答

9

你試圖在類的頂層加一個try塊 - 你不能做到這一點。嘗試塊必須位於方法或初始化塊中。

如果你真的上創建施工服務器套接字,將代碼放在構造函數:

public class Server { 

    private ServerSocket serverSocket; 
    private Socket firstConnection; 

    public Server { 
     try 
     { 
      serverSocket = new ServerSocket(3333); 
      firstConnection = serverSocket.accept(); 
     } 
     catch(IOException e) 
     { 
      System.out.println("IOError"); 
     } 
    } 
} 

我假設你有真正異常處理(或重新拋出),而不是僅僅捕捉IOException並繼續,當然?

+0

oooops我錯過了那個 – 2010-10-07 19:17:57

+0

是的,當然。 TY。 – Ahmed 2010-10-07 19:29:58

0

這不是有效的Java。此代碼需要位於塊,方法或構造函數中。

0

從您的IDE的屏幕截圖中,錯誤「必須被捕獲或聲明爲拋出」不是您唯一的錯誤。

當你有這麼遠的語法時,編譯器可能會報告幾個錯誤,其中一些錯誤是其他錯誤的副作用 - 比如沒有將這段代碼封裝在一個方法中(我確定接下來的紅色X到catch塊報告一個類似的錯誤)。

相關問題