위키득계정 ↗
기술

예외 처리

예외 처리기술
영문명
Exception handling
주요 기능
예외 상황의 전달과 처리
관련 동작
발생, 전파와 처리기 실행
주의점
모든 오류가 자동으로 복구되지는 않음
예외 처리는 프로그램의 정상적인 실행 흐름에서 벗어난 상황을 별도의 처리 경로로 전달하고 대응하는 방식이다. 오류를 감지하는 일과 복구, 자원 정리 및 기록을 구분해 설계해야 한다.

정상 경로와 분리하기

파일을 읽으려 했는데 파일이 없거나 통신이 끊겼다면 원래 계산을 계속할 수 없을 수 있다. 예외는 이런 상황을 호출한 쪽의 적절한 처리기로 전달하는 방법이다. 예외를 사용하지 않고 반환값으로 실패를 표현하는 방식도 있다.

잡는 것과 해결하는 것은 다르다

예외를 포착했다고 필요한 작업이 성공한 것은 아니다. 복구할 수 있는지 판단하거나 실패 사실을 상위 호출자에게 전달하고 실행을 중단할 수 있다. 아무 기록 없이 무시하면 잘못된 상태로 처리가 이어질 수 있다.

자원을 정리하기

파일과 연결, 잠금 같은 자원은 성공과 실패 어느 경로에서도 적절히 정리해야 한다. 언어의 자원 관리 구문이나 정리 절차를 사용하면 누락을 줄일 수 있다. 정리 중에 또 오류가 생겼을 때 원래 원인을 가리지 않도록 설계하는 것도 중요하다.

재시도의 조건

일시적인 실패는 다시 시도해 해결될 수 있지만 이미 일부 작업이 반영됐는지도 살펴야 한다. 같은 요청이 중복되어도 안전한지, 되돌릴 수 있는지와 재시도 횟수를 정해야 한다. 오류를 만날 때마다 무조건 반복하는 방식은 부하와 중복 처리를 늘릴 수 있다.

관련 문서

프로그래밍 언어 / 데이터베이스 트랜잭션 / 소프트웨어 / 알고리즘