예외 처리의 기본 개념
예외가 난 줄 아래의 코드는 실행될까?
화면을 누르면 다음 장으로 넘어갑니다
예외
예외는 감지된 비정상 사건입니다
예외(exception)는 하드웨어나 소프트웨어가 감지할 수 있는 비정상적인 사건입니다. 꼭 오류가 아니어도, 특별한 처리가 필요하면 예외로 다룹니다.
두 예는 설명을 위해 든 것입니다. 첨자는 배열에서 몇 번째 요소인지 나타내는 번호입니다.
발생과 처리
남은 줄을 건너뛰고 처리기로
예외가 일어나는 것을 예외 발생(raise)이라고 합니다. 발생하면 남은 줄은 실행되지 않고, 그 예외를 맡은 예외 처리기(exception handler)로 실행이 옮겨 갑니다. 거기서 하는 일이 예외 처리입니다.
파이썬 예시 코드입니다. a[i]는 배열 a의 i번째 요소이고, i가 범위를 벗어나면 IndexError라는 예외가 발생합니다.
예외가 없으면
아무 일 없으면 처리기를 지나칩니다
예외가 나지 않으면 try 아래 줄들을 끝까지 실행하고 처리기는 건너뜁니다. 처리기는 예외가 났을 때만 실행되는 코드입니다.
앞 장과 같은 코드입니다. 왼쪽은 i가 범위 안일 때, 오른쪽은 범위를 벗어났을 때입니다.
누가 일으키나
저절로 나기도, 직접 일으키기도
예외는 언어가 실행 중에 감지해서 발생시키기도 하고, 프로그램이 문장을 적어 직접 발생시키기도 합니다. 파이썬과 루비는 raise, C++와 자바는 throw(던진다)라고 적습니다.
raise IndexError는 IndexError 예외를 직접 발생시키는 파이썬 문장입니다.
다음 편