Java 帮助我修复这个线程示例中的一个bug
我正在尝试创建一个线程来简单地将文本发送到客户端。但是,如果将此代码复制到IDE,您将看到client.getOutputStream()下有一条红色下划线。我不知道这里出了什么问题。IDE显示“未处理的异常类型IOException”。有人能告诉我吗Java 帮助我修复这个线程示例中的一个bug,java,exception-handling,Java,Exception Handling,我正在尝试创建一个线程来简单地将文本发送到客户端。但是,如果将此代码复制到IDE,您将看到client.getOutputStream()下有一条红色下划线。我不知道这里出了什么问题。IDE显示“未处理的异常类型IOException”。有人能告诉我吗 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class ServerStudentThread extends Thread {
Socket client;
public ServerStudentThread(Socket x) {
client = x;
}
public void run() {
// create object to send information to client
PrintWriter out = new PrintWriter(client.getOutputStream(),true);
out.println("Student name: ");//send text to client;
}
}
以下是调用线程的代码供参考
import java.io.*;
import java.net.*;
import java.util.*;
public class Server2 {
public static void main(String args[]) throws Exception {
int PORT = 5555; // Open port 5555
//open socket to listen
ServerSocket server = new ServerSocket(PORT);
Socket client = null;
while (true) {
System.out.println("Waiting for client...");
// open client socket to accept connection
client = server.accept();
System.out.println(client.getInetAddress()+" contacted ");
System.out.println("Creating thread to serve request");
ServerStudentThread student = new ServerStudentThread(client);
student.start();
}
}
}
可能是getOutputStream()会抛出异常,而您无法捕获它,请尝试在代码块周围放置一个try/catch(IOException e)
public void run() {
try {
// create object to send information to client
PrintWriter out = new PrintWriter(client.getOutputStream(),true);
out.println("Student name: ");//send text to client;
} catch (IOException e) {
throw new RuntimeException("It all went horribly wrong!", e);
}
}
从:
public OutputStream getOutputStream()引发IOException
是一个选中的异常。您需要使用
try
/catch
块来处理这种可能性。因此您需要添加try/catch块来处理I/O异常
阅读Java教程中关于的部分。Kalla
如果你不知道红色下划线的意思,你需要在try/catch块之间放一行,或者声明run来抛出IOException如果你不知道红色下划线的意思,那么你有没有尝试编译代码来获得编译消息?@camickr:它说线程“thread-0”中出现异常错误:未解决的编译问题:ServerStudentThread.run(ServerStudentThread.java:21)上未处理的异常类型IOException感谢您的回复。我只是Java的初学者。是的,我听说在爪哇我们总是需要尝试和抓住。为什么?@Kalla,这就是为什么我为你提供了教程链接,这样你就可以阅读,而不必依赖别人发布代码。这样您就可以更好地理解这个概念。run方法由
Runnable
接口指定,如果OP试图抛出选中的异常,它将不会遵守该接口。我相信在这种情况下,结果将是一个重载方法和一个启动时什么都不做的线程。