У меня сейчас есть проблема, которую я не могу решить.У меня есть проект в 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
.Я не знаю что не так.Я даже пытался и не смог добавить в save
после op.execute();
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
, когда он находится на уровне просмотра.
Что я могу сделать?Любое предложение работает для меня прямо сейчас.Заранее спасибо.