java – 为什么异常错误字符串在不同的环境中有所不同?
发布时间:2020-12-15 08:36:15 所属栏目:Java 来源:网络整理
导读:我有这段代码来处理捕获特定异常 private static final String CONNECTION_REFUSED_EXCEPTION = "java.net.ConnectException: Connection refused: connect";...} catch (org.apache.axis.AxisFault af) { if (af.getFaultString().equals(CONNECTION_REFUSE
我有这段代码来处理捕获特定异常
private static final String CONNECTION_REFUSED_EXCEPTION = "java.net.ConnectException: Connection refused: connect"; ... } catch (org.apache.axis.AxisFault af) { if (af.getFaultString().equals(CONNECTION_REFUSED_EXCEPTION)) { // Do something } } 这在我的Windows开发环境中本地工作正常 但是,当我部署到unix机器进行测试时,故障字符串会有所不同,如下所示(注意:连接缺失从末端开始) > Windows故障字符串: 为什么会这样? 为了记录,我相信以下更适合匹配故障字符串: ... if(af.getCause() instanceof java.net.ConnectException) ... 解决方法
“故障字符串”消息旨在为调试目的提供其他信息.它们可以在不同的实现,版本或环境中变化.这同样适用于所有Exception消息字符串(Throwable.getMessage()).
应用程序代码不应依赖于Exception消息的确切文本,以便识别异常的原因.您建议使用instanceof来检查异常的原因是一个更好的解决方案. 编辑: 如果您绝对需要检查详细消息,因为它似乎发生在您的情况下(因为getCause()返回null),那么我建议检查详细消息是否包含您要检查的特定包装异常的名称(例如java.net.ConnectException).如果getCause()首先没有返回null,那么这将是您获得的相同信息,并且应该使用详细消息的确切文本最小化依赖性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java中的I/O输入输出流概述
- 使用Java中的长字符串(heredocs) – 可读的方法?
- java – 您可以从命令行运行所有JUnit测试,而不显式列出它们
- java处理Excel文件---excel文件的创建,删除,写入,读取
- java中的图形实现
- 为什么不能将java包命名为“default”?
- Difference Between HashMap and IdentityHashMap--转
- java – 尝试传递自定义oracle类型对象映射时无效的名称模式
- 基于Java的大型数据集的基于文件的合并排序
- java – maven-assembly-plugin MojoExecutionException,其