【发布时间】:2018-04-02 11:28:39
【问题描述】:
我正在开发一个带有 Java 套接字的客户端 - 服务器应用程序。
客户端必须等待服务器的响应。当服务器接收到客户端的请求时,它会执行某些任务以获得必须传递给客户端的结果 - 但执行这些任务可能会导致错误。
有没有什么方法可以在出现这个错误时应用程序不会终止并且可以继续处理请求?
package Socket;
import javax.swing.*;
import java.awt.*;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Server
{
public static void main(String[] args)
{
MainWindow application=new MainWindow();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MainWindow extends JFrame implements Runnable
{
public MainWindow()
{
setBounds(1200,300,280,350);
JPanel myPanel= new JPanel();
myPanel.setLayout(new BorderLayout());
text=new JTextArea();
myPanel.add(text,BorderLayout.CENTER);
add(myPanel);
setVisible(true);
Thread t= new Thread(this);
t.start();
}
private JTextArea text;
@Override
public void run()
{
try
{
ServerSocket Server = new ServerSocket(9999);
while(true)
{
Socket mySocket = Server.accept();
DataInputStream input_stream = new DataInputStream(mySocket.getInputStream());
String message = input_stream.readUTF();
someMethod(); //This method can generate an exception, then the application closes and I can not receive new requests
text.append("\n" + message);
mySocket.close();
}
}
catch (IOException ex)
{
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
【问题讨论】:
-
你的意思是像try-catch?
-
什么样的异常?一个 IO 异常?是的?你已经抓住了他们。一些运行时异常?也捕获运行时异常。
-
是的,类似的
-
@JohannesKuhn 我明白了,我会试试的。谢谢
-
您可能想添加一个
finally以在最后关闭您的套接字。
标签: java sockets exception java-threads