inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

체크 예외 활용

체크예외와 언체크예외

184

오리쉐리

작성한 질문수 108

0

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

 

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

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

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

spring mvc spring-jdbc

답변 1

0

인프런 AI 인턴

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

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

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

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

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

0

오리쉐리

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

spring initialiser 어떤걸 선택해야될지 모르겠어요

0

32

2

트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.

0

51

1

jdbc 학습하다 궁금해서 질문드려요

0

82

1

정상이체와 이체중 예외발생 차이

0

68

2

이번 강의부터가 JDBC 직접 사용 맞나요?

0

88

1

순수한 서비스 계층에 대한 의문???

0

82

2

3_4test, 4test 자동 리소스 안됨

0

58

2

데이터베이스 선택 관련 질문.

0

68

2

after 메서드 사용 유무

0

57

2

데이터베이스 접근 및 DB 락

0

55

1

@SpingBootTest, @TestConfiguration

0

56

1

Read Committed 격리 수준 사용 관련 질문

0

48

1

AopCheck Test 부분의 EnhancerBySpring 확인 법??

0

66

2

커리큘럼 관련 질문

0

76

1

서비서 계층 스프링 프레임워크 사용

0

88

1

validation(toMember)의 위치

0

83

2

데이터 계층에서 서비스 로직의 datasource를 인식하는 방법

0

165

2

member 상수 질문

0

121

2

ctrl + F6 이후로 con 인식이 안 됩니다

0

153

2

DrivenManager 와 Connection 반환에 대한 질문입니다!

0

109

1

섹션5 트랜잭션 템플릿관련 질문(이기종 DB)

0

116

1

세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?

0

100

1

트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?

0

98

1

강의 14분쯤 Exception 질문

0

115

2