У меня есть веб-приложение со слоем контроллера, уровнем сервиса и уровнем доступа к данным.
Checkmarx жалуется на improper error handling
, когда я вызываю getSingleResult
на моем уровне доступа к данным, где методы выглядят следующим образом :
public FilterWorkflow getNextStatusesForAction(final Long currentStatus, final String actionRequested) {
Query query = this.getEntityManager().createQuery(GET_NEXT_STATUSES_FOR_ACTION);
query.setParameter("currentStatus_Id", currentStatus);
query.setParameter("actionRequested", actionRequested);
return (FilterWorkflow) query.getSingleResult();
}
Это вызывается из уровня сервиса следующим образом:
@Override
@Transactional(value="txManager", rollbackFor = Exception.class)
public SomeFilter executeAction(SomeFilter bf, final String action requested) throws Exception {
Long currentStatusID = bf.getFilteStatus().getTableId();
FilterWorkflow fw = this.someDAO.getNextStatusesForAction(currentStatusID, actionRequested);
return this.updateFilterStatus(fw, bf, actionRequested);
}
который вызывается на уровне контроллера:
public String execute(SomeFilter bf, final String command) {
try {
bf = this.someService.executeAction(bf, command);
} catch (Exception e) {
LOGGER.info(e.getMessage());
FacesUtil.addErrorMessage(this.msgApp.getMessage("error_message"));
return null;
}
return null;
}
Я думаю, исключение обрабатывается, потому что с исключениями, которые может генерировать getSingleResult
, больше нечего делать, кроме отображения сообщения об ошибке пользователю и регистрации этой ошибки.
Я что-то упустил?