主类(Main1.java)。其中的方法有a1(),a2().
在Main1.java要先后调用a1(),a2()。当a1()中try块里出现异常,那么进入catch中,catch里写return;是否会重新执行a1()这个方法?如果会执行,在return时执行成功了,能够回到Main1中,继续执行a2()方法吗?其中a1和a2都是void返回类型请详细解释一下,如果出现异常,我想重新执行该方法,并且执行后返回调用处继续向下执行其他代码,该如何实现?谢谢各位大侠!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    public void connect(JTextArea textarea) {
    if (client == null) {
    try {
    client = new FtpClient();
    setConnectTimeOut(5000);
    client.openServer(host, port);
    client.login(username, password);
    client.cd(path);
    client.binary();
    } catch (IOException e) {
    e.printStackTrace();
    // 出现错误
    client = null;
    textarea.append(Down.getDate() + " 与服务器连接失败,正在尝试重新连接服务器... \n");
    textarea.setCaretPosition(textarea.getText().length());
    return;
    }
    } else {
    try {
    client.noop();
    client.cd(path);
    } catch (IOException e) {
    e.printStackTrace();
    } }
    }
    这个是我连接服务器时用的方法,如果出现异常,在catch块中写了return 语句,是否可以重新执行connect这个方法?是否可以回到调用connect这个方法的地方继续执行下面的代码?
      

  2.   

    打错了,应该在catch中把那个client = null;去掉,然后再看看
      

  3.   

    加个finally在finally块中试着写你的代码
      

  4.   

    finally中写什么?我没有执行关闭连接的操作啊。请具体说说。
      

  5.   

    LZ,你用了return语句,那么当执行catch中的return时程序就会退出的啊
    3楼说的finally,你可以用下,应该可以的.
      

  6.   

    你可以在a1中把整个try块(包括catch)放入一个while循环,即使发生异常,也尝试一定次数才return,return后当然就可以继续a2.
      

  7.   

    finally里面调用a1的方法
    不过小心哦..一个try只对应一个finally
    如果你把finally写在a2后面,那就不是a1的finally了。
      

  8.   

    抛出异常就不会继续执行了。
    fanally方法里面利用递归调用。