예외처리 exception handling
정의
- 코드 실행 중 예기치 않은 오류 발생에 대비하는 코드 작성법
- 예기치 않은 오류를 예외(exception)로 정의하며
- 프로그램이 비정상적으로 종료되는 것을 방지한다.
try-except 문과 finally 블록을 사용한다.
예외처리를 하지 않을 경우
- 오류를 별도로 처리하지 않으면, 런타임 에러로 프로그램이 즉시 종료될 수 있음
- 이는 사용자 경험 저하, 데이터 손실, 리소스 누수 등의 추가적인 문제를 일으키며
- 개발자 입장으로도 디버깅을 어렵게 하는 현상으로 여겨진다.
예외처리를 할 경우
- 런타임 에러로 프로그램이 비정상 종료되는 것을 방지
- 사용자 및 개발자도 예외처리에서 보이는 에러 힌트를 보고 오류 원인을 유추할 수 있음
try-except 문의 사용
기본 문법
1
2
3
4
| try:
# 예외가 발생할 수도 있는 코드
except 예외타입:
# 예외 발생 시 실행할 코드
|
예시
기본적인 try-except
1
2
3
4
5
| try:
number = int(input("숫자를 입력하세요"))
result = 10/number
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
|
예외 타입별로 처리하는 경우
1
2
3
4
5
6
7
| try:
number = int(input("숫자를 입력하세요"))
result = 10/number
except ZeroDivisionError: # number 가 0인 경우
print("0으로 나눌 수 없습니다.")
except ValueError: # 숫자를 입력하지 않은 경우
print("유효한 숫자를 입력해야 합니다.")
|
동시에 여러 예외 타입을 처리하는 경우
1
2
3
4
5
| try:
number = int(input("숫자를 입력하세요"))
result = 10/number
except (ZeroDivisionError, TypeError):
print("입력값이 잘못되었습니다.")
|
모든 타입의 에러를 포괄해 처리하는 경우
1
2
3
4
5
| try:
number = int(input("숫자를 입력하세요"))
result = 10/number
except:
print("오류가 발생했습니다. 확인해주세요.")
|
Finally 블록
정의
- 예외 발생 여부와 관계 없이 반드시 실행되는 코드 블록
- Finally 를 통해 컨텍스트 관리를 하면 타당하다.
문법
1
2
3
4
5
6
| try:
# 예외가 발생할 수 있는 코드
except:
# 예외 발생시 실행할 코드
finally:
# 예외 여부에 상관 없이 실행할 코드
|
예시
1
2
3
4
5
6
7
8
9
| try:
file = open("data.csv", "r")
content = file.read()
print(content)
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
finally:
print("파일 작업 종료")
file.close()
|
Reference
방송통신대 - 오픈소스기반 데이터분석 (정재화)
Comments