为什么我尝试在PrintWriter上写异常时抛出异常?

| 我有一个简单的ChatClient,可以将数据发送到服务器。为了使Chat Client发送数据,我制作了一个Socket,将PrintWriter制作到socket.getOutputStream(),然后执行writer.println(\“ \”)。由于某种原因,我得到了一个很大的例外。我查看了与我类似的例外,很多人说要更新Java。但是我的Mac上有最新版本。是因为我有Leopard,还是我的伪劣编程?请看一下。
private void setUpNetworking() {

        try {
            **sock = new Socket(\"127.0.0.1\", 65534);**
            InputStreamReader streamReader = new InputStreamReader(sock.getInputStream());
            reader = new BufferedReader(streamReader);

            **writer = new PrintWriter(sock.getOutputStream());**
            System.out.println(\"made connection... everything here works\");

        }
        catch (IOException ex) {
            ex.printStackTrace();
            System.out.println(\"setup fail, but i didn\'t get this\");

        }
    }

    public class SendButtonListener implements ActionListener{
        public void actionPerformed (ActionEvent ev){
            try {
                **writer.println(entertext.getText());**
                **writer.flush();**
                System.out.println(\"PROBLEM IS RIGHT HERE!!!\");

            }
            catch (Exception ex) {
                ex.printStackTrace();
                System.out.println(\"i get a exception. HELP\");

            }
这是我的例外:
java.lang.NullPointerException
    at SimpleChatClient$SendButtonListener.actionPerformed(SimpleChatClient.java:52)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1882)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2202)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:246)
    at java.awt.Component.processMouseEvent(Component.java:5617)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3129)
    at java.awt.Component.processEvent(Component.java:5382)
    at java.awt.Container.processEvent(Container.java:2010)
    at java.awt.Component.dispatchEventImpl(Component.java:4083)
    at java.awt.Container.dispatchEventImpl(Container.java:2068)
    at java.awt.Component.dispatchEvent(Component.java:3918)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3936)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
    at java.awt.Container.dispatchEventImpl(Container.java:2054)
    at java.awt.Window.dispatchEventImpl(Window.java:1801)
    at java.awt.Component.dispatchEvent(Component.java:3918)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:501)
    at java.awt.EventQueue.access$000(EventQueue.java:80)
    at java.awt.EventQueue$1.run(EventQueue.java:462)
    at java.awt.EventQueue$1.run(EventQueue.java:461)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:84)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:95)
    at java.awt.EventQueue$2.run(EventQueue.java:476)
    at java.awt.EventQueue$2.run(EventQueue.java:475)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:84)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:473)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
    **at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)**
我不知道这是什么意思。请帮忙。     
已邀请:
从堆栈跟踪和笔记中,听起来就像当您调用
writer.println(entertext.getText());
在您的ѭ4the的
actionPerformed
方法中,
writer
enterText
中的任何一个都不为空。 哪个为空,如何从代码中清除它是如何实现的,但是您应该能够通过调试器或日志记录来弄清楚。     
调试方法如下: 在出现异常之前,单独放入“ 7”以打印可能为空的所有内容 或在调试器中运行它(例如,Eclipse提供了一个调试器),并在获得该行时查看变量的值     
Chekc.SimpleChatClient的第52行,其中存在ir.null     

要回复问题请先登录注册