1

我有以下代码:

    private Socket mSenderSocket = null;

    private DataInputStream in = null;
    private DataOutputStream out = null;

    ...

        try 
        {
            mSenderSocket = new Socket(java.net.InetAddress.getByName(TCP_SERVER_IP), 12345);
            out = new DataOutputStream(mSenderSocket.getOutputStream());
            in = new DataInputStream(mSenderSocket.getInputStream());
        } 
        catch (UnknownHostException ex) 
        {
           System.err.println("Don't know about host.");
        }
        catch(IOException ex)
        {
            System.err.println("Couldn't get I/O");
        }

我对以下场景感兴趣:

在聊天会话期间,如果发生 I/O 异常,那么我必须执行以下操作:

mSenderSocket = new Socket(java.net.InetAddress.getByName(TCP_SERVER_IP);

现在DataInputStream和会发生什么DataOutputStream

我应该再次初始化这些对象吗?

4

1 回答 1

3

几乎可以肯定,在发生错误的情况下,您想丢弃整个对象并重新开始,或者甚至一开始就不要构造该对象。

(您可能还希望 a finallyon that 关闭Socket。碰巧,调用close任一流或 onSocket将完全关闭所有三个对象。)

于 2013-04-19T12:42:05.403 回答