处理层之间的异常

Handling exceptions between tiers

我目前遇到无法解决的问题。我在 JDeveloper 中有一个使用 ADF 的项目。 当模型层某处发生异常(Throwable)时,我无法在视图层捕获它。 让我更好地解释一下:

在视图中,我有 Transaction.java 其中

public void save(){
     try{ 
         Boolean res= (Boolean) context.get("res"); //value obtained from front-end
         OperationBinding op = this.getBindings().getOperationBinding("methodThatThrowsException"); 
         op.getParamsMap().put("res", res);
         op.execute();//line that should throw exception
     }catch(ClassCastException cce){
          showMessage(cce.getMessage()); //pop up with a description of the exception
}

然后,在模型层:

public void methodThatThrowsException(Boolean res) throws ClassCastException {
     try{ 
         Object obj = res;
         Integer badCoding = (Integer) obj; //line that throws exception
     }catch(ClassCastException e){
           //clean-up code
        }
}

methodThatThrowsException 会抛出一个 ClassCastException 但它不会被 save 方法捕获。 我不知道出了什么问题。我什至尝试在 op.execute();

之后添加 save 但失败了
if(!op.getErrors().isEmpty()){
for(Throwable t : op.getErrors()){
    if (t instanceof Exception){
        Exception e = (Exception) t;
        if (e instanceof RuntimeException)
            RuntimeException re = (RuntimeException) e;
            if(re instanceof ClassCastException)
                throw t;
    }

}

但是有了这个可怕的解决方法,t 永远不会被抛出,因为它是 JBOException,而不是 ClassCastException,当它在视图层时。

我能做什么?任何建议现在都对我有用。提前致谢。

绑定层的异常处理对于熟悉java的人来说是违反直觉的:

Boolean res= (Boolean) context.get("res"); //value obtained from front-end
perationBinding op = this.getBindings().getOperationBinding("methodThatThrowsException"); 
op.getParamsMap().put("res", res);
op.execute();//line that should throw exception
//grab the exception this way
op.getErrors()