如何捕获外部JAR引起的异常

时间:2014-05-06 10:52:23

标签: java jsch

我有这样的场景:

我正在尝试在数据库服务器上执行命令(df -h,即查找磁盘空闲空间的命令)。我试图使用两个JAR文件,即jsch-0.1.51.jar和ganymed-ssh2-build210.jar。

现在,当输入任何worng凭证时,它会导致以下异常

com.jcraft.jsch.JSchException

但是当我试图抓住那个例外时,它说:

Unreachable catch block for JSchException. This exception is never thrown from the try statement body

并且程序失败我怎么能抓住这个“com.jcraft.jsch.JSchException”异常。???

欢迎任何建议。提前谢谢。

完整的堆栈跟踪如下:

Connect fails with the following exception: com.jcraft.jsch.JSchException: java.net.UnknownHostException: Select Option

会话失败了 com.jcraft.jsch.JSchException:会话已关闭

at com.jcraft.jsch.Session.openChannel(Session.java:752)     at net.neoremind.sshxcute.core.SSHExec.exec(SSHExec.java:164)     在org.nrift.SchMaint.controller.CheckSpaceServlet.doPost(CheckSpaceServlet.java:63)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:647)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:728)     在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)     在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

2 个答案:

答案 0 :(得分:1)

好吧,据我所知,该方法未被声明为抛出异常,因此您的IDE抱怨异常永远不会被抛出。作为一种解决方法,您可以像这样封装方法调用:

public void openChannelHelper() throws com.jcraft.jsch.JSchException {
    // call your method here.    
}

这应该允许你做类似的事情:

try {
    openChannelHelper();
} catch (com.jcraft.jsch.JSchException e) {
    // handle the exception here
}

希望这有帮助。

答案 1 :(得分:0)

我认为您已经编写了多个catch块但订单不正确。你应该试试下面的

try {
    //your code will be here where JSchException may occur 
} catch (com.jcraft.jsch.JSchException e) {
    // write here what you want if JSchException occur
} catch (Exception e) {
    // this block for other exception
}