SocketException
メッセージの受信スレッドを停止させる際、SocketExceptionが出るのでどうしたものかと。以下にコードを載せます。
import java.io.*; import java.net.*; public class Sample implements Runnable{ private static String host; private Socket s; private BufferedInputStream bis; public static void main(String[] args) { host = args[0]; Thread t = new Thread(new Sample()); t.start(); } public void run() { int a; try{ s = new Socket(host, 9876); bis = new BufferedInputStream( s.getInputStream()); while((a=bis.read())!=-1){ /* * doSomething(); */ } }catch(SocketException e){ }catch(IOException e){ } } private void stop(){ try { s.close(); bis.close(); } catch (IOException e) { e.printStackTrace(); } } }
run()メソッド内でIOExceptionの前にSocketExceptionを付けることで解決。当たり前のことなんだろうけど、俺は知らなかったのでここにメモ
IOExceptionの後にSocketExeceptionをcatchさせると必要無い旨の警告が出たので、IOExceptionでSocketExceptionを処理できるものだと考えていました。