Java 如何捕获由外部jar引起的异常
我有这样一个场景:Java 如何捕获由外部jar引起的异常,java,jsch,Java,Jsch,我有这样一个场景: public void openChannelHelper() throws com.jcraft.jsch.JSchException { // call your method here. } 我试图在数据库服务器上执行一个命令(df-hi.e查找磁盘可用空间的命令)。我试图通过使用两个JAR文件来实现这一点,即jsch-0.1.51.JAR和ganymed-ssh2-build210.JAR 现在,当输入任何worng Credentail时,会导致以
public void openChannelHelper() throws com.jcraft.jsch.JSchException {
// call your method here.
}
我试图在数据库服务器上执行一个命令(df-hi.e查找磁盘可用空间的命令)。我试图通过使用两个JAR文件来实现这一点,即jsch-0.1.51.JAR和ganymed-ssh2-build210.JAR
现在,当输入任何worng Credentail时,会导致以下异常
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:会话已关闭
在com.jcraft.jsch.Session.openChannel上(Session.java:752)
位于net.neoEmilding.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)根据我所知,该方法未声明引发异常,因此您的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
}
希望这有帮助。我认为您已经编写了多个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
}
你能提供完整的堆栈跟踪吗?试着只捕获一般的“异常”。你读过这篇文章吗?您的问题是这样的吗?“com.jcraft.jsch.JSchException”可能是一个嵌套的异常,这意味着它在堆栈跟踪中前面加上了“起因”。若要查看是否是这种情况,请在catch块中调用e.printStackTrace()。该方法是否声明抛出JSCHEException?