当前位置: 代码迷 >> J2SE >> try。catch有关问题
  详细解决方案

try。catch有关问题

热度:95   发布时间:2016-04-24 00:21:57.0
try。。。catch问题
Java code
// 读取数据    private class readThread extends Thread {        public void run() {            BufferedInputStream inStream = null;            String s = new String();            try {                inStream = new BufferedInputStream(socket.getInputStream());                while (true) {                    byte[] buffer = new byte[1024];                    inStream.read(buffer);                    String str = new String(buffer);                    Log.i("", str.trim());                    s += str.trim();                    Log.i("333333333333333333", s);                }            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } finally {                Message msg = new Message();                Log.i("222222222", s);                msg.obj = s;                msg.what = 1;                LinkDetectedHandler.sendMessage(msg);                s = new String();            }        }    }


为什么finally里的代码不执行?

------解决方案--------------------
探讨
我知道你说的,在死循环中,read肯定会出现异常。但是为什么没有执行finally!

------解决方案--------------------
可能是socket没有数据写入,造成read()函数阻塞吧
------解决方案--------------------
有数据写进来就不会阻塞了啊
------解决方案--------------------
肯定是因为 没有 读取到数据的缘故,阻塞在那里了。

你可以用System.in.read();代替,都是等到接收数据的。只是这个要你从控制台输入,不然就一直等在那里。跟你代码的场景是一样的。
------解决方案--------------------
探讨
read怎么可能发生异常 他读完了就返回-1 你自己好好看看read的说明