Java BufferedReader在连接到套接字结束后不引发异常
当按下按钮时,我使用bufferedReader从客户端中的服务器读取输出,它工作正常,但是当连接关闭时,我无法让它使用方法errorHandling-我包装入(bufferedReader对象)。readLine在try/catch中,但它不会引发异常,也不会抛出。当连接失败时,checkError返回true。如果连接结束,程序将完全冻结,不会到达最后一个捕获Java BufferedReader在连接到套接字结束后不引发异常,java,sockets,exception-handling,connection,bufferedreader,Java,Sockets,Exception Handling,Connection,Bufferedreader,当按下按钮时,我使用bufferedReader从客户端中的服务器读取输出,它工作正常,但是当连接关闭时,我无法让它使用方法errorHandling-我包装入(bufferedReader对象)。readLine在try/catch中,但它不会引发异常,也不会抛出。当连接失败时,checkError返回true。如果连接结束,程序将完全冻结,不会到达最后一个捕获 if(source==button) { String back = ""; if
if(source==button) {
String back = "";
if(out.checkError()){
errorHandling("I/O Closed");
return;
}
switch(currentOp){
case(0):
out.println("R "+input.getText());
break;
case(1):
out.println("P "+input.getText());
break;
case(2):
out.println("M "+input.getText());
break;
}
try{
if((back=in.readLine())==null) throw new SocketServerException();
}
catch(Exception e){
errorHandling("I/O Closed");
return;
}
你所描述的情况是不可能的。因此,它不会发生。对等套接字必须仍处于打开状态。检查您的观察结果。听起来连接没有被关闭。是的,因为我在电脑上手动关闭了服务器。我认为问题在于readLine()会一直读到读到某一行,而由于没有什么可读的内容,所以只会挂起程序。不过我不知道怎么修。。我尝试使用socket.isInputClosed等,但它们都返回false,无论是什么Tok nvm,这不是readline的错误,当我尝试使用read()读取单个字符时也会发生同样的情况-它会冻结。是的,它是打开的,因为我在linux控制台中使用ctrl+c关闭服务器,但它不会关闭。我不知道怎么修,修什么?服务器没有关闭吗?那是另一个问题。