处理层之间的异常
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()
我目前遇到无法解决的问题。我在 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()