나는 매우 호기심이 많습니다. EJB에서 런타임 예외를 어떻게 잡을 수 있습니까?
나는 EJB의 방법을 실행하려고 및 쿼리 방법은 일부 값과BiFuction
과
Function
을 필요로 JAX-RS
public Service readSingle(...) {
try {
service.query(...);
} catch (final NoResultException nre) {
throw new NotFoundException(...);
} catch (final NonUniqueResultException nure) {
throw new BadRequstException(...);
}
}
와 결과를 반환하고 있습니다.
실제 호출은 다음과 같습니다. 좋아
try {
return serviceService.<Service>query(
id,
ofNullable(matrixParameters.getFirst("onid"))
.map(Integer::parseInt).orElse(null),
ofNullable(matrixParameters.getFirst("tsid"))
.map(Integer::parseInt).orElse(null),
ofNullable(matrixParameters.getFirst("sid"))
.map(Integer::parseInt).orElse(null),
ofNullable(matrixParameters.getFirst("number"))
.map(Integer::parseInt).orElse(null),
ofNullable(matrixParameters.getFirst("programId"))
.orElse(null),
operatorId,
(builder, root) -> emptyList(),
TypedQuery::getSingleResult);
} catch (final NoResultException nre) {
throw new NotFoundException(
"no entity idnetified by " + serviceIdSegment.getPath()
+ " with " + matrixParameters.toString());
} catch (final NonUniqueResultException nure) {
throw new BadRequestException("multiple entities identified");
}
나는 TypedQuery::getSingleResult
를 통과하고 나는 그것을 던져되어야 할 때 NonUniqueResultException
이 잡힐한다 기대한다.
하지만 Payara는 500으로 응답하며 로그에는 NonUniqueResultException
이 코드에서 전혀 잡히지 않았 음이 표시됩니다.
ExceptionMappers를 사용하지 않도록 설정 한 결과가 동일합니다.