zeon java库未捕获异常

zeon java库未捕获异常,java,sftp,Java,Sftp,嗨,我正在使用Zeon库实现一个sftp客户机,它运行良好。当我测试它是否失败时,问题就开始了。下面是我的代码: int status = 0; try { SFTPClient sftpClient = new SFTPClient(host, username, password); status = sftpClient.sendFolder(sendingFolder, destFolder, new BatchTransferProgressDefault());

嗨,我正在使用Zeon库实现一个sftp客户机,它运行良好。当我测试它是否失败时,问题就开始了。下面是我的代码:

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,即使我的控制台显示异常,它也不会进入我的异常

有人知道如何强制zeon库进入我的异常块吗??
提前感谢

您的问题是,这种情况可能正在发生:

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);
}

这似乎是一个错误的图书馆,我将不得不寻找一个不同的图书馆。这很可惜,因为它很容易使用。

这是一个在黑暗中拍摄的镜头,但是在进入try块之前状态==false吗?@sdadas如果在块之后状态为
true
,并且记录了异常,在进入块之前,它只能是
true
。@linker85你说它不进入我的异常是什么意思?你说它在控制台上,是
LOGGER
写它的地方吗?如果您发布的代码中出现异常,然后,
status
的值在
try/catch
块中不会改变。这表明跟随状态标志是完全不相关的,并且正在抛出异常,并且只记录异常。它抛出一个FileTransferException,但它不会进入catch块,这与此库类似以另一种方式返回-关键是它实际上是在抛出异常,而您只是在记录它。将System.out.println放在catch块中,您就会明白我的意思。我将Logger更改为e.printstracktrace(),但它仍然不想捕获错误您是否将两个Logger都更改为打印堆栈跟踪?如果是这样的话,那我就错了——它是否打印出FileTransferStatus.SUCCESS?是的,即使很难,它也抛出了一个异常,它仍然告诉我它成功地进行了传输,这是一个谎言。