예외 처리
Exception Handling
프로그램이 항상 예상대로 실행된다는 가정에서 벗어나, 실행 중 발생할 수 있는 예외를 확인하고 프로그램이 중단되지 않도록 필요한 상황을 처리한다.
Colab에서 열기 → · Notebook 파일 보기 →
수업에서 확인한 예외
| 예외 | 확인한 상황 |
|---|---|
IndexError | 리스트에 없는 위치에 접근하는 경우 |
ValueError | 입력값을 원하는 자료형으로 변환할 수 없는 경우 |
ZeroDivisionError | 0으로 나누는 계산을 하는 경우 |
FileNotFoundError | 읽기 모드로 열려는 파일이 존재하지 않는 경우 |
기본 구조
IEEE 754에서 실제로 사용한 ValueError
float()로 바꿀 수 없는 문자열이 입력되면 ValueError가 발생한다. 이때 프로그램을 끝내지 않고 안내 문장을 출력한 뒤 다시 입력받는다.
텍스트 RPG에서 실제로 사용한 FileNotFoundError
저장 파일을 r 모드로 읽으려고 했는데 파일이 없으면 FileNotFoundError가 발생한다. 이 코드는 프로그램을 중단하는 대신 False를 반환하고, 호출한 쪽에서 그 값을 이용해 “저장 파일이 없습니다.”라는 흐름으로 이어지게 한다.
파일 모드와 예외
| 모드 | 파일이 없을 때 / 있을 때 |
|---|---|
r | 없는 파일을 읽으려 하면 FileNotFoundError가 발생한다. |
w | 없으면 새 파일을 만들고, 있으면 기존 내용을 지우고 새로 쓴다. |
a | 없으면 새 파일을 만들고, 있으면 기존 내용 뒤에 이어 쓴다. |
연습
- 위 RPG 코드에서
except FileNotFoundError:부분을 제거하면 저장 파일이 없을 때 프로그램 흐름이 어떻게 달라질지 설명해 보자. SaveManager.load()가False를 반환한 뒤Game.process_command()에서 어떤 조건으로 이어지는지 찾아보자.- 파일을 처음 만드는 상황에서
r,w,a중 어떤 모드를 사용할 수 있는지 비교해 보자.