• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

UNCHECKED EXCEPTION 질문

23.03.13 19:42 작성 23.03.13 19:57 수정 조회수 336

1


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
uncheckedapptest 클래스에서 service class 부분입니다. service.logic()을 실행하면 먼저 repository.call()에서 runtimesqlexception이 발생하게 됩니다. 그럼 이 경우에 아래줄읜 networkclient.call()을 실행 안하고 바로 throw runtimesqlexception을 하게 되나요?

이 부분에서 runtimesqlexception.class를 runtimeconnectexception으로 바꿔서 검증하면 에러가 납니다.!

결론)

1)이 코드가 작동할때는 runtimesqlexception이 발생해서 networkclient.calll()을 실행안하고 throw로 runtimesqlexception만 던지는지

2) 그럼 서블릿은 runtimeconnectexception이 발생했다는 것을 인지를 전혀 못하는지

 

3)마지막 사진에서 runtimesqlexception.class대신 runtimeconnectexception.class로 바꿔 실행하면 왜 초록불이 안들어오는지 궁급합니다!

궁금합니다!!

답변 1

답변을 작성해보세요.

2

안녕하세요. gntjd135님

Q: 그럼 이 경우에 아래줄읜 networkclient.call()을 실행 안하고 바로 throw runtimesqlexception을 하게 되나요?

-> 네 맞습니다. 예외가 발생하면 다음 라인을 호출하지 않습니다.

Q: 이 부분에서 runtimesqlexception.class를 runtimeconnectexception으로 바꿔서 검증하면 에러가 납니다.!

-> runtimesqlexception과 runtimeconnectexception은 서로 다른 예외입니다. 따라서 변경하면 검증 로직에서 에러가 발생하는 것이 맞습니다. isInstacneOf(RuntimeException)으로 변경하면 둘다 확인할 수 있습니다. 자세한 내용은 자바 instanceof 로 검색해보시면 이해가 되실거에요.

현재 로직에서는 이미 앞서 예외가 발생했기 때문에 networkClient.call();이 호출되지 않습니다. 따라서 RuntimeConnectException이 발생하지 않습니다. 하지만 앞서 runtimesqlexception 예외를 잡아서 처리하는 코드를 추가하고 이후에 networkClient.call() 로직을 수행한다면 다음 로직이 호출될 수 있고, RuntimeConnectException도 발생할 수 있습니다.

감사합니다.