java - 获取 JschException 的原始原因
问题描述
我需要对 JschException 做一些处理。无论异常的具体原因是什么(即 SocketTimeoutException、UnknownHostKey 或 AuthFail),看起来都会引发“JschException”。我确定最初的具体原因的最佳方法是什么?e.getMessage()
我是解析字符串的唯一选择吗?
这里是基本结构。
try {
session = jSch.getSession(getUsername(), host);
session.setUserInfo(user);
session.connect();
} catch (JSchException e) {
e.printStackTrace();
// Here I need to identify the cause and handle accordingly.
}
例如,这里分别是超时和身份验证失败的顶部跟踪。
com.jcraft.jsch.JSchException: Session.connect: java.net.SocketTimeoutException: Read timed out
com.jcraft.jsch.JSchException: Auth fail
如果这很重要,我想针对身份验证错误启动 try 块的重试,并因超时错误而失败。
解决方案
确实,JSch 抛出异常是一种无法找到根本原因的方式(解析异常消息除外)。
JSch 充满了这样的代码:
catch(Exception e) {
...
throw new JSchException("Session.connect: "+e);
}
推荐阅读
- django - 用于 facebook 登录的社交 django 包显示 url 错误
- swift - 如何通过 UIWebView 快速加载像 docx 这样的 Microsoft 文件
- java - Spark 上的 Tensorflow Java API 在 new Graph() 处失败
- azure - 我想为我的 Azure 门户获取所有资源的明智计费
- jquery - ie9动画旋转如何使用
- java - Java 快速排序分区方法
- git - Git:如何在 SourceTree 中取消存储特定文件?
- mysql - 安装centos 7后mysql 8无法登录
- node.js - 处理程序函数中的 AWS Lambda Node JS 8.10 语法错误
- c# - xamarin 形成清晰的选择器选择