inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Readable Code: 읽기 좋은 코드를 작성하는 사고법

해피 케이스와 예외 처리

의도한 예외와 의도하지않은 예외가 정확하게 무슨뜻인가요 ?

381

나민혁

작성한 질문수 3

0

우선 강의 잘 듣고있습니다. 의도한 예외와 의도하지 않은 예외가 조금 헷갈리는데 제가 이해한 개념이 맞는지 여쭈어봅니다.

 

강사님께서 말씀하시는 의도한 예외는 개발자가 인지하고 Exception을 던지는 경우를 말씀하시고 의도하지 않은 예외는 개발자가 인지하지 못하고 Exception이 발생한다는 뜻일까요 ??

 

그렇다면 잘짜여진 코드에서는 모두 의도한 예외가 되어야 되는건가요 ??
의도하지 않은 예외를 사용하는 일은 없는건가요 ?

 

의도한 예외 - 개발자가 예상하고 처리한 예외

의도하지 않은 예외 - 개발자가 놓치거나, 빼먹은 예외

의도하지 않은 예외 발생시 의도한 예외로 바꾼다.


이렇게 이해하면 될까요 ?

객체지향 리팩토링 클린코드-기획전

답변 3

0

박우빈

안녕하세요, 나민혁 님!

 

강사님께서 말씀하시는 의도한 예외는 개발자가 인지하고 Exception을 던지는 경우를 말씀하시고 의도하지 않은 예외는 개발자가 인지하지 못하고 Exception이 발생한다는 뜻일까요 ??

맞습니다!
이해하신대로 "의도한 예외"를 발생 시켜 흐름을 제어하거나 어떤 의도를 전달할 수도 있고,
반대로 "의도하지 않은 예외"가 발생하는 것을 방지하기 위해 예외가 발생할 수 있는 구간을 잘 방어하여 "의도한 예외"로 전환하는 과정이 중요합니다.

감사합니다 🙂

0

ssshhh

잘 이해하신 것 같아요 거기에 덧붙여서 제 조촐한 생각을 말씀드리면

강의에 나왔다시피 의도한 예외의 경우 사용자의 입력을 받는 경우 신뢰할 수 없는 데이터 값이라는 것이 자명해서 개발자가 검증 로직을 통해서 처리를 해줄 수 있을 것 같아요. 예외를 발생 시킨 후 그에 적절한 처리를 해주는 것이죠

의도하지 않은 예외의 경우 개발자가 어찌 할 수 없는 예외라고 생각해 봤어요. 예를 들면 데이터비에스와의 커넥션이 끊겨 버려서 사용자에게 정보 제공을 할 수 없을 때 가 있을 것 같아요.
이런 경우를 의도하지 않은 예외로 간주한다고 생각합니다. 위의 경우 뿐만 아니라 이러한 심각한 상황들을 일괄적으로 사용자에게 정보 제공 대신 임시방편으로 에러 페이지를 띄워 주는 처리를 할 수 있을 것 같습니다.

2

나민혁

감사합니다. 로그를 확인하여서 처리 할 수 있는 부분은 의도한 예외로 바꾸고 말씀해주신대로 데이터베이스와 커넥션이 끊어지는 것은 어쩔 수 없는 부분이니 의도하지 않은 예외로 생각하면 되겠군요

 

가능하다면 최대한 의도한 예외로 바꾸는게 좋다는 말씀이군요 감사합니다 !

0

인프런 AI 인턴

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

나민혁님께서 강의의 주제인 “의도한 예외와 의도하지 않은 예외”에 대해 질문해주셨습니다. 이와 관련된 유사한 질문과 답변을 다음과 같이 소개드리겠습니다.

위 링크에서는 예외 처리와 관련된 다양한 유형의 예외에 대해 설명하고 있으니 참고하시면 도움이 될 것입니다. 예외 처리에 대해 더 깊이 이해할 수 있습니다.

간단히 요약하자면:

의도한 예외(Intentional Exception)
- 개발자가 예상하고, 특정 상황에서 발생하도록 의도한 예외입니다.
- 예를 들어, 입력 값의 범위가 벗어났을 때 IllegalArgumentException을 던지는 경우가 있습니다. 이처럼 개발자가 명시적으로 예상하고 처리한 예외입니다.

의도하지 않은 예외(Unintentional Exception)
- 개발자가 예상하지 못한 상황에서 발생하는 예외입니다.
- 예를 들어, 배열의 인덱스를 잘못 참조하여 발생하는 ArrayIndexOutOfBoundsException과 같은 경우가 있습니다. 이는 개발자가 처리하지 못한 예외로 볼 수 있습니다.

따라서, 의도하지 않은 예외가 발생하지 않도록 방어 코드를 작성해야 하며, 발생할 수 있는 예외를 최대한 예측하고 적절히 처리하는 것이 중요합니다.

의도하지 않은 예외를 의도한 예외로 바꾸려면, try-catch 블록을 사용하여 예외를 처리하고, 해당 예외를 로깅하거나 사용자에게 친절한 메시지를 전달하는 방식으로 개선할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

[강의 질문] 메서드 선언부

0

90

1

[강의 질문] 메서드와 추상화

0

61

2

DIP 개념에 대한 질문입니다.

0

64

1

만약 보드를 이용한 게임의 종류가 더 다양해진다면 어떻게 될 수 있을지에 대한 고민

0

86

2

DIP 설명 후반부에 IOC에 대한 질문 드립니다.

0

79

2

안녕하세요 ! 혹시 자바가 아닌 다른 객체지향 언어를 알고있어도 강의를 들어도 괜찮을까요 ?!

0

71

1

안녕하세요 메서드명 때문에 고민이 있어서 질문드립니다.

1

64

2

자바 record 사용에 대해서 질문 드립니다!

0

127

2

강의 내용 정리 및 자료 제작 툴 문의 드립니다.

0

136

2

사용할 변수 가깝게 선언하기 질문

0

93

1

오버 엔지니어링

0

148

2

학습용 java/spring 오픈소스 추천

1

363

2

중복된 메서드 줄이는 방법

0

183

2

MarketPlace에서 Sonarlint 검색이 안됩니다.

0

417

3

isLandMineCell() 메서드 질문

0

209

1

Cell[][]BOARD 매개변수받기

0

153

2

ConsoleInputHandler에서 왜 final붙여야 하는지

0

193

1

정적 생성자 메서드 of, from

0

264

2

Getter관해서

0

148

3

이름 바꾸기

0

129

2

stack 대신 queue 를 사용해 bfs 로 변경해도 되나요??

0

164

2

현업에서 ISP를 도입하려는데 인터페이스 설계에 있어서 의문이 있습니다.

0

207

2

null을 가질 수 있는 값을 인자로 넘겨야 하는 경우

0

250

3

리팩토링을 하고 난 뒤 다시보면 오히려 더 복잡해 보이는것 같은 느낌입니다..

0

254

2