未报告的异常java.io.IOException

未报告的异常java.io.IOException,java,exception-handling,Java,Exception Handling,这个代码怎么了 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(IOExc

这个代码怎么了

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");
    }

}
首先,我编写了没有try-catch的代码,得到了一个
未报告的异常java.io.IOException;必须捕获或声明要抛出
错误,但Netbeans不建议我添加try-catch块。现在我手动添加了try-catch块,但它仍然显示错误,并建议我必须添加另一个try-catch块


您试图在类的顶层添加一个try块-您不能这样做。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并继续,当然?

您试图在类的顶层添加一个try块-您不能这样做。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并继续,当然?

这不是有效的Java。此代码需要位于块、方法或构造函数中。

这不是有效的Java。此代码需要位于块、方法或构造函数中。

从IDE的屏幕截图中,错误“必须捕获或声明要抛出”不是唯一的错误


当你有这么远的语法时,编译器可能会报告几个错误,其中一些是其他错误的副作用——比如没有将代码包含在一个方法中(我确信catch块旁边的红色X报告了一个类似的错误)。

在IDE的屏幕截图中,错误“必须被捕获或声明为抛出”这不是你唯一的错误


当你有这么远的语法时,编译器可能会报告几个错误,其中一些是其他错误的副作用——比如没有将此代码包含在一个方法中(我确信catch块旁边的红色X报告了一个类似的错误)。

它编译/运行了吗?可能是IDE错误。您没有任何方法中的代码…它是否编译/运行?可能是IDE错误。您没有任何方法中的代码。。。