我有这样的场景:
我正在尝试在数据库服务器上执行命令(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)
答案 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
}