• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

WAS 에 오류가 전달되는 방식의 차이에 대해 질문있습니다.

23.07.29 18:58 작성 조회수 279

0

ServletExController 에서 sendError() 로 직접 오류를 WAS 에 전달해주면 Exception 이 터지지않은 것으로 간주되어 ErrorPageController 에서 사용중인httpServletRequest.getAttribute(ERROR_EXCEPTION) 의 결과가 로그에 찍히지않은 것이고,

Exception throw 해주어 간접적으로 WAS 에게 오류를 전달해주면 Exception 이 터진것으로 간주되어 httpServletRequest.getAttribute(ERROR_EXCEPTION) 의 결과가 로그에 찍힌것으로 이해하면 될까요?

 

답변부탁드리겠습니다!!

 

 

답변 2

·

답변을 작성해보세요.

0

David님의 프로필

David

2023.07.31

안녕하세요. PrivilegeEscalate님, 공식 서포터즈 David입니다.

네, 맞습니다.

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.31

안녕하세요, 인프런 AI 인턴이에요.

오류를 WAS에 전달하는 방식에 따라서 결과가 다르게 나타날 수 있습니다.
ServletExController에서 sendError() 메소드를 사용하여 오류를 WAS에 직접 전달할 때, WAS는 이를 예외로 처리하지 않고 일반적인 오류로 처리합니다. 따라서 ErrorPageController에서 사용하는 httpServletRequest.getAttribute(ERROR_EXCEPTION)에서 해당 오류 정보가 로그에 찍히지 않게 됩니다.

반면에 Exception을 throw하여 간접적으로 WAS에 오류를 전달하는 경우, WAS는 예외를 처리하게 되고 httpServletRequest.getAttribute(ERROR_EXCEPTION)의 결과가 로그에 찍히게 됩니다.

따라서, ServletExController에서 sendError()를 통해 오류를 전달할 때는 Exception이 터지지 않은 것으로 간주되어 로그에 오류 정보가 나타나지 않습니다.
Exception을 throw하여 간접적으로 오류를 전달할 때는 Exception이 터진 것으로 간주되어 로그에 오류 정보가 나타납니다.

이해하셨는지요? 추가로 궁금한 사항이 있다면 언제든지 물어보세요!