Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在自己的捕获块中捕获web服务的自定义异常_Java_Soap_Pojo_Custom Exceptions - Fatal编程技术网

Java 无法在自己的捕获块中捕获web服务的自定义异常

Java 无法在自己的捕获块中捕获web服务的自定义异常,java,soap,pojo,custom-exceptions,Java,Soap,Pojo,Custom Exceptions,我们使用的web服务抛出3种类型的自定义web服务错误,即ServiceException、ConnectionException和InvalidDataException 除了这些catch块之外,我们还为RemoteAccessException添加了catch块,这是spring的运行时异常 catch (org.springframework.remoting.RemoteAccessException remoteAccessExc) { } 在测试上面列出的自定义异常时,我们发现所

我们使用的web服务抛出3种类型的自定义web服务错误,即ServiceException、ConnectionException和InvalidDataException

除了这些catch块之外,我们还为RemoteAccessException添加了catch块,这是spring的运行时异常

catch (org.springframework.remoting.RemoteAccessException remoteAccessExc) {
}
在测试上面列出的自定义异常时,我们发现所有这3种类型的异常都没有在各自的catch块中被捕获。而是在最后一个catch块(RemoteAccessException)中捕获所有内容。在调试类型为org.springframework.remoting.jaxws.JaxWsSoapFaultException的soap fault异常对象期间,我们发现服务正在抛出正确的错误

我关心的是,为什么这些断层没有落入它们自己的圈套。服务本身告诉我们在进行服务调用时处理这些异常

当我通过代理java客户机访问服务时,故障会正确地落在各自的块中。如果POJO's出现问题,那么在这种情况下它们也不应该工作。但它们在这种情况下工作(当通过java代理客户端命中时),这意味着POJO中没有问题


我们正在使用spring-2.5.6.jar

由于您保留不同的catch块,并且故障对象被覆盖,请执行以下操作:

检查每个catch块中的fault对象是否为null,以便在抛出故障时,它不会在任何其他catch块中被重写。这是因为在catch块的每个条目上都放置了NOTNULL检查

try{
    //////
}Catch(IllegalArgumentException e){
    create fault object;
    throw fault;    
}
Catch(Exception e){
    ///check whether fault object is not null

    if(fault!=null){
    throw fault;
}else{
    ///another fault object 
    throw fault1;
}

我想你不明白stmt的问题。我的问题是,为什么异常没有落入正确的捕捉块中。我们不希望通过在通用异常块中处理来进行任何黑客攻击。希望这有助于理解问题。故障处理不当的原因。