0

我的 InvocationTargetException 在 printStackTrace 执行时打印如下:

轴故障
 故障代码:file.could.not.be.created
 故障子代码:
 faultString:无法创建文件
 故障演员:
 故障节点:
 故障详情:
    {http://schemas.xmlsoap.org/soap/envelope/}故障:file.already.exists文件已经存在

无法创建文件
    在 org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    在 org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    在 org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    在 org.apache.xerces.parsers.AbstractSAXParser.endElement(未知来源)

我想从 InvocationTargetException 中检索故障代码和故障字符串:file.already.exists 文件已存在

我怎样才能做到这一点??

4

1 回答 1

1

我不确定为什么堆栈跟踪看起来像这样并且不包含实际 InvocationFailureException 的跟踪,但我假设 AxisFault 直接包装在 InvocationFailureException 中,然后解开它可能会有所帮助,例如:

    try {
         // here code which throws InvocationFailureException
    } catch (InvocationFailureException e) {
        Throwable rootCause = e.getRootCause();
        if (rootCause instanceof AxisFault) {
            AxisFault axFault = (AxisFault)rootCause;
            // now extract information, e.g. 
            axFault.getFaultDetails();
        }
    }

如果不直接包装,您甚至可能需要递归获取根本原因。

于 2013-02-04T18:28:03.327 回答