2010-10-07 131 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块报告一个类似的错误)。

相关问题