인프런 커뮤니티 질문&답변

오리쉐리님의 프로필 이미지

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

체크 예외 활용

체크예외와 언체크예외

작성

·

63

0

체크예외와 언체크예외에 대해서 복구불가능한 문제와 언체크예외를 주로 사용해야하는 부분에 대해서 아래와 같이 이해했는데 이렇게 이해하면 될까요??

 

1. 예외는 주로 복구 불가능한 이유가 예외가 발생하면 try~catch로 예외를 처리해서 정상흐름대로는 할순있지만, 예외가 발생한거에대해서 이를 복구해서 원했던결과대로 정상적으로 돌리는것은 불가능하기때문에 그런건가요??

+ 애플리케이션내에서 코드를 통해서 복구할수는 없는건가요??

  1. 체크예외에서는 예외가 발생하면 throws로 예외를 던져야하지만 이를  서비스나 컨트롤러에서는 try catch로 처리할순있어도 딱히 예외를 복구할순없다.  그래서 그냥 try~catch로 예외를 처리하지말고 예외를 발생시켜서 개발자가 로그를통해 예외를 인지하는게 낫다. 결국 그래서 throws를 할필요가없는 언체크예외가 낫다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

체크예외와 언체크예외에 대한 오리쉐리님의 이해는 대체로 맞습니다. 예외 처리의 목적과 예외의 종류에 따른 적절한 사용 방법을 잘 파악하고 계신 것 같아요. 예외는 다음과 같이 이해하시면 좋을 것 같습니다.

  1. 복구 불가능한 예외에 대해, 예외가 발생하면 프로그램의 흐름을 변경시켜 일종의 ‘안전장치’로 작동하지만, 예외가 발생한 상황 자체를 완전히 복구하여 원래 의도대로의 결과를 도출하는 것은 대부분의 경우 어렵습니다. 하지만, 모든 상황에서 복구가 불가능한 것은 아니며, 경우에 따라서는 적절한 예외 처리를 통해 예외 상황을 복구하거나 안정적으로 처리할 수 있는 방법을 선택할 수 있습니다.

  2. 체크예외와 언체크예외의 사용에 대해서는, 체크예외는 컴파일 시점에 처리를 강제하는 예외로, 예외 발생 가능성을 명시적으로 알려주고 개발자가 의도적으로 처리 로직을 구현하게 합니다. 반면, 언체크예외는 런타임 예외로 처리되며, 주로 프로그램의 오류나 버그로 인해 발생하는 예외로 보는 것이 일반적입니다. 체크예외를 강제로 처리하게 함으로써 미리 예외 상황에 대비할 수 있지만, 모든 예외를 체크예외로 처리하면 코드의 복잡성이 증가할 수 있어 선택적으로 사용하는 것이 좋습니다. 언체크예외는 개발자가 예외 처리를 간결하게 유지할 수 있도록 도와주며, 수많은 try-catch 블록으로 코드가 복잡해지는 것을 방지합니다.

즉, 예외 처리는 예외의 복구 가능 여부, 프로그램의 안정성, 코드의 가독성 및 유지 보수성 등을 고려하여 적절히 사용하는 것이 중요합니다. 오리쉐리님께서 이해하신 내용은 상당 부분 정확하며, 애플리케이션의 특성과 요구사항에 따라 적절한 예외 처리 전략을 선택하는 것이 좋습니다.

오리쉐리님의 프로필 이미지
오리쉐리
질문자

아아 저는 "처리" 라고 하면 단순히 try~catch로 예외를 처리할수 있는데 예외를 처리할 방법이 없다고해서 헷갈렸던거 같습니다. 이부분에서는 말씀해주신거처럼 "복구" 라고 이해하면 될거같네요..!