此代码有什么问题
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");
}
}
首先我编写了代码而没有尝试catch,我得到了一个unreported exception java.io.IOException; must be caught or declared to be thrown
错误,但Netbeans没有建议我添加一个try-catch块。现在我手动添加了try-catch块,但它仍然显示错误,并建议我必须添加另一个try-catch块!
答案 0 :(得分: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并继续,当然?
答案 1 :(得分:0)
这不是有效的Java。此代码需要位于块,方法或构造函数中。
答案 2 :(得分:0)
从IDE的屏幕截图中,错误“必须被捕获或声明被抛出”并不是您唯一的错误。
如果你的语法很远,编译器可能会报告几个错误,其中一些错误是其他错误的副作用 - 比如不将这个代码包含在方法中(我确定旁边的红色X) catch块报告了类似的错误。)