Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们如何处理ConnectException?_Java_Networking - Fatal编程技术网

Java 我们如何处理ConnectException?

Java 我们如何处理ConnectException?,java,networking,Java,Networking,我搜索了很多,但找不到很好的答案。我使用try\u catch块处理此异常(如果引发此异常,将向用户显示一帧,我将告诉他/她一条消息),但它仍在控制台中显示异常。请帮助我。谢谢 将引发此异常的submit()方法: private void submit() throws ConnectException { String id = idField.getText(); char[] pass1 = passField.getPassword(); String p

我搜索了很多,但找不到很好的答案。我使用try\u catch块处理此异常(如果引发此异常,将向用户显示一帧,我将告诉他/她一条消息),但它仍在控制台中显示异常。请帮助我。谢谢

将引发此异常的submit()方法:

  private void submit() throws ConnectException {

    String id = idField.getText();
    char[] pass1 = passField.getPassword();
    String pass = new String(pass1);
    if (id.equals("") || pass.equals("")) {
        JOptionPane.showMessageDialog(this, "You should enter an ID and password", "Sign_In Problem", JOptionPane.OK_OPTION);
        return;
    } else {
        boolean b = Manager.Test(id, pass);
        if (b == true) {
            this.setVisible(false);

            Main.runAClient();

            ListFrame frame = new ListFrame(client);
            frame.setVisible(true);





        } else {

            JOptionPane.showMessageDialog(this, "You have entered wrong datas,try it again", "Sign_In Problem", JOptionPane.OK_OPTION);
            return;
        }
    }
}
我使用netbeans,这是登录按钮的操作:

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        submit();
    } catch (ConnectException ex) {
        JOptionPane.showMessageDialog(this, "You coudn't connect to the server successfully,try it again", "Sign_In Problem", JOptionPane.OK_OPTION);

    }}
我的runAClient方法:

 public static void runAClient()throws ConnectException{
    try {
        c = new Socket("localhost", 5000);
    } catch (ConnectException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
}
堆栈跟踪:

init:
deps-jar:
compile-single:
run-single:
Jan 11, 2010 5:20:35 PM ClientNetWork.Main runAClient
SEVERE: null
java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:518)
        at java.net.Socket.connect(Socket.java:468)
        at java.net.Socket.<init>(Socket.java:365)
        at java.net.Socket.<init>(Socket.java:179)
        at ClientNetWork.Main.runAClient(Main.java:29)
        at ClientGUI.MainFrame.submit(MainFrame.java:335)
        at ClientGUI.MainFrame.jButton1ActionPerformed(MainFrame.java:233)
        at ClientGUI.MainFrame.access$400(MainFrame.java:34)
        at ClientGUI.MainFrame$5.actionPerformed(MainFrame.java:122)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
        at javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(BasicRootPaneUI.java:191)
        at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636)
        at javax.swing.JComponent.processKeyBinding(JComponent.java:2849)
        at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267)
        at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216)
        at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2926)
        at javax.swing.JComponent.processKeyBindings(JComponent.java:2918)
        at javax.swing.JComponent.processKeyEvent(JComponent.java:2812)
        at java.awt.Component.processEvent(Component.java:5815)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:697)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:962)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:834)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:661)
        at java.awt.Component.dispatchEventImpl(Component.java:4282)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Window.dispatchEventImpl(Window.java:2429)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
init:
deps jar:
编译单个:
单程运行:
2010年1月11日下午5:20:35客户端网络。主运行客户端
严重:空
java.net.ConnectException:连接被拒绝:连接
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
位于java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
位于java.net.socksocketimpl.connect(socksocketimpl.java:366)
位于java.net.Socket.connect(Socket.java:518)
位于java.net.Socket.connect(Socket.java:468)
位于java.net.Socket。(Socket.java:365)
位于java.net.Socket(Socket.java:179)
位于ClientNetWork.Main.runAClient(Main.java:29)
位于ClientGUI.MainFrame.submit(MainFrame.java:335)
在ClientGUI.MainFrame.jButton1ActionPerformed上(MainFrame.java:233)
在ClientGUI.MainFrame.access$400(MainFrame.java:34)
在ClientGUI.MainFrame$5.actionPerformed(MainFrame.java:122)
在javax.swing.AbstractButton.fireActionPerformed上(AbstractButton.java:1995)
位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:387)
在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:242)
位于javax.swing.AbstractButton.doClick(AbstractButton.java:357)
位于javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(BasicRootPaneUI.java:191)
位于javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636)
位于javax.swing.JComponent.processKeyBinding(JComponent.java:2849)
fireBinding(KeyboardManager.java:267)
在javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216)
位于javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2926)
位于javax.swing.JComponent.processKeyBindings(JComponent.java:2918)
位于javax.swing.JComponent.processKeyEvent(JComponent.java:2812)
位于java.awt.Component.processEvent(Component.java:5815)
位于java.awt.Container.processEvent(Container.java:2058)
位于java.awt.Component.dispatchEventImpl(Component.java:4410)
位于java.awt.Container.dispatchEventImpl(Container.java:2116)
位于java.awt.Component.dispatchEvent(Component.java:4240)
在java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)中
位于java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:697)
位于java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:962)
位于java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:834)
位于java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:661)
位于java.awt.Component.dispatchEventImpl(Component.java:4282)
位于java.awt.Container.dispatchEventImpl(Container.java:2116)
位于java.awt.Window.dispatchEventImpl(Window.java:2429)
位于java.awt.Component.dispatchEvent(Component.java:4240)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:183)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:173)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

你有密码吗

  Main.runAClient();

也许有人正在捕获该异常并将其记录下来,然后重新引用?

您在上一个问题中发布了代码:

通过
runAClient
方法判断,您正在记录异常并将其吃掉(而不是进一步抛出)

第二个捕获(
IOException
)不应该记录,应该引发异常。实际上,您可能希望将该捕获拆分为一个ConnectException捕获(您将抛出)和一个IOException捕获(您可以单独处理)

编辑:我将对此进行一点扩展。扩展,然后扩展
IOException
,您正在捕获并登录
runAClient
方法。你可以做两件事:

  • 完全删除
    IOException
    ,并在更高级别捕获它(我认为这是一个非常丑陋的解决方案)

  • IOException
    块拆分为两个catch块,一个用于只抛出的
    ConnectException
    ,另一个用于
    IOException
    块的其余部分,可以记录(或以不同方式处理)-只需确保
    ConnectException
    块写在
    IOException
    块之前

在回答了105个问题后,您没有学会给出代码示例吗?请从控制台粘贴完整的stacktrace。。。也许它并没有抛出你所认为的完全一样的异常?pff,经典。。laura在你的另一个问题中找到了runAClass方法的代码,似乎你正在那里记录你的异常。如果您查看自己的代码,请检查并不要问有明显答案的问题!在我看来,似乎有
public static void runAClient() {
    try {
        c = new Socket("localhost", 5000);
    } catch (UnknownHostException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
}