2012-12-17 45 views
0

嗨我正在使用Zeon库实现sftp客户端,它工作正常。当我测试它在这里失败问题开始是我的代码:zeon java库不捕捉异常

  int status = 0; 
      try { 
       SFTPClient sftpClient = new SFTPClient(host, username, password); 
       status = sftpClient.sendFolder(sendingFolder, destFolder, new BatchTransferProgressDefault()); 

       System.out.println("FileTransferStatus.SUCCESS: " + FileTransferStatus.SUCCESS); 
       System.out.println("status: " + status); 
      }catch (FileTransferException e){ 
       LOGGER.error(e); 
      }catch (Exception e2){ 
       LOGGER.error(e2); 
      } 

所以我把一个错误的主机,用户名和密码,状态标志仍返回true甚至强硬我控制台显示异常,它doesn't进入我的例外。

有谁知道如何强制zeon库进入我的异常块? 在此先感谢

+0

这是在黑暗中拍摄的,但是在进入try块之前状态是== false? – sdasdadas

+0

@sdasdadas如果在块和一个Exception被记录之后状态为'true',那么在进入块之前它只能是'true'。 – jlordo

+0

@ linker85 _it是什么意思不会进入我的exception_?你说它在控制台上,LOGGER是在哪里写的?如果您发布的代码中发生异常,'status'的值不会在'try/catch'块中更改。 – jlordo

回答

0

它似乎是库的一个bug,我将不得不寻找一个不同的库。这很可惜,因为它很容易使用。

0

你的问题是,这是可能发生的事情:

boolean status = true; 
// ... status flag doesn't ever get set to false ... 
try { 
    SFTPClient sftpClient = new SFTPClient(host, username, password); 
    // Your error is thrown before you get this far. 
    status = sftpClient.sendFolder(sendingFolder, destFolder, new BatchTransferProgressDefault()); 
    System.out.println("FileTransferStatus.SUCCESS: " + FileTransferStatus.SUCCESS); 
    System.out.println("status: " + status); 
} catch (FileTransferException e){ 
    // The error is logged which means you'll only see it wherever you log it. 
    LOGGER.error(e); 
} catch (Exception e2){ 
    LOGGER.error(e2); 
} 
+0

是的东西一样althoug这个库返回int – linker85

+0

无论哪种方式 - 重点是它实际上是抛出一个异常,你只是记录它。把一个System.out.println放入你的catch块中,你会明白我的意思。 – sdasdadas

+0

我更改了e.printstracktrace()的记录器,但它仍然不想捕获错误 – linker85