EJB容器認爲異常有兩種方式 -JAVA EE - EJB/CDI/JPA:異常處理
應用程序異常 - 如果違反業務規則或在執行業務邏輯出現異常。
系統異常 - 任何異常,這不是由業務邏輯或業務代碼引起的。 RuntimeException,RemoteException是SystemException。例如,在EJB查找期間發生錯誤。 RuntimeException,RemoteException是SystemException。
- >這是否意味着我需要使用checked異常我bussines邏輯是什麼?喜歡這個 ?
private void checkConstraints(Object object) throws ValidationException{
Set<ConstraintViolation<Object>> constraintsAdress = this.getValidator().validate(object);
if(!constraintsAdress.isEmpty()){
String fullErrorConstraint = "";
for (ConstraintViolation<Object> constraint : constraintsAdress) {
fullErrorConstraint = fullErrorConstraint + constraint.getMessage() + "\n";
}
throw new ValidationException(fullErrorConstraint);
}
}
@Override
public long addCafe(Cafe cafe) throws ValidationException, DBException{
this.checkConstraints(cafe.getAddress());
for(FootballMatch footballMatch: cafe.getNextMatchesToWatch()){
this.checkConstraints(footballMatch);
}
this.checkConstraints(cafe);
this.getManager().persist(cafe);
return cafe.getCafeID();
}
但是......
應用程序異常不會自動導致除非ApplicationException的註釋應用到異常類,並與回滾元素值true指定標記事務回滾...
我不完全理解它了...... 這是個好主意,用:
- @ApplicationException(rollback = true)?
- 你可以使用這一個,然後也作出unchecked異常?
THX提前 乾杯 湯姆