日期:2014-05-20  浏览次数:20875 次

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的说明