적절한 예외처리
- 예외상황: 컨트롤 할 수 없는 상황
- 예외 안정성: 예외가 났지만 나기 전 상황으로 무사히 돌아가야 한다. → 원래 있었던 올바른 상태로 복구가 되어야 함.
1. 유효성 검사/예외는 오직 경계에서만 하기
- 밖에서 오는 데이터를 제어할 수 없다. (파일을 읽고 있었는데 지워지거나, 데이터를 요청했는데 NULL이 오거나 등의 사유)
- → 외부에서 들어오는 웹 요청, 파일 읽기/쓰기, 외부 라이브러리
2. 시스템에 들어온 데이터는 모두 올바르다고 간주할 것.
- assert를 사용하여 개발 중 문제를 잡아내고 고칠 것.
- assert → 디버그 중 발견할 수 있도록 함.
3. 예외 상황이 발생할 때는 NULL을 능동적으로 반한할 것.
- 기본적으로 함수가 NULL을 반환하거나 받는 일이 없어야 한다.
- 만약 NULL을 반환하거나, 받는다면 함수의 이름을 잘 지어야 한다.
→ orNull을 통해서 파라미터 혹은 함수 이름에 명시하라.
TDD 반대
- 동일한 프로그래머가 로직과 예외를 모두 작성한다.
→ 동일한 프로그래머가 작성한 유니 테스트가 한계를 갖는 이유.
→ 로직이 잘못되었다면 예외도 잘못되었을 가능성이 높다. - 양질의 소프트웨어는 예외가 아니라 철저한 테스트 계획에서 만들어진다.
'Language > C++' 카테고리의 다른 글
[C++] 34.Unmanaged Programming: Vector (0) | 2024.01.31 |
---|---|
[C++] 33.Unmanaged Programming: STL 표준 템플릿 라이브러리 (0) | 2024.01.31 |
[C++] 31.Unmanaged Programming: Exception (1) | 2024.01.31 |
[C++] 30.Unmanaged Programming: static 키워드 (1) | 2024.01.31 |
[C++] 29.Unmanaged Programming: 인라인 함수 (0) | 2024.01.31 |