컨트롤러의 메소드에서

삭제를 진행함.


나의 업무는 삭제가 외래키제약조건으로 인해 안먹힐 경우 해당 외래키제약조건을 에러메세지로 반환하는것.


구조는 ControllerAdvice에서 ExceptionHandler를 등록하려고 함.



근데 DataIntegrityViolationException이 안잡힘

분명 에러는 DataIntegrityViolationException인데 안잡혀


근데 에러가 두개가 뜨더라?

하나는 트랜잭션롤백에러임.


혹시나해서 트랜잭션롤백에러로 처리해봤더니 잡혀.


이때 문제점은 에러메세지가 DataIntegrityViolationException의 rootCause에 있다는점.


트랜잭션 롤백 에러는 별개의 에러라서 에러메세지가 안잡힘.


굳이 에러메세지 소실이슈가 없더라도

난 에러가 두개뜨는 이유와 두번째 에러만 잡는 이유를 꼭 알아야겠어.


혹시 트랜잭션처리가 멀티쓰레드로 이뤄지니?
그래서 다른 쓰레드에서 DataIntegrityViolationException이 일어났고

해당 익셉션은 혹시 메인쓰레드에도 에러를 전파시키니?
(쓰레드를 조인하는과정에서 전파가 가능할테니)


만약 그렇다면

여기서 DataIntegrityViolationException을 잡을 방법은 뭐야?

트라이 캐치로 잡는것도 포함.

어케든 잡아줘

어떻게 잡음?