■ 예외란?
- 프로그램의 실행 도중에 만날 수 있는 오류들을 Exception이라고 한다.
- 파이썬에서는 안정적인 프로그래밍 작성을 위해 try, except를 이용해서 오류처리를 할 수 있다.
# 방법 1
try:
오류발생 코드
except:
오류처리 코드
# 방법 2
try:
오류발생 코드
except 발생 오류 :
오류처리 코드
# 방법 3
try:
오류발생 코드
except 발생 오류 as 오류 메시지 변수:
오류처리 코드
# 방법 4
try:
오류발생 코드
except 발생 오류 as 오류 메시지 변수:
오류처리 코드
else :
오류가 발생하지 않았을 때 코드
# 방법 5
try:
오류발생 코드
except 발생 오류 as 오류 메시지 변수:
오류처리 코드
finally :
반드시 처리해야하는 코드
■ 예외의 종류
예외 |
설명 |
NameError |
초기화하지 않은 변수를 사용할 때 발생 |
ValueError |
타입은 맞지만 값의 형식이 잘못되었을 경우 발생 |
ZeroDivisonError |
0으로 나누었을 때 발생 |
IndexError |
첨자가 범위를 벗어났을 때 발생 |
TypeError |
타입이 맞지 않은 경우 발생 |
■ 예외 강제 발생
- 특정 조건에 맞지 않은 상황을 예외로 처리할 수 있다.
- 이런 경우 raise 명령어를 사용하여 예외를 인위적으로 발생시킬 수 있다.
num = int(input('숫자 입력: ‘))
if num < 0:
raise ValueError('양수만 입력하세요.’)
else:
print('num = ', num)
# 예 1 : Exception 발생시키기
a = [1, 2, 3, 4, 5]
#a[5] # IndexError
b = "123@"
# c = int(b) # ValueError
try :
f = open("dontexist.txt") # FileNotFoundError 파일이 없으면 오류발생
except FileNotFoundError as e :
print(e)
else :
data = f.read()
print(data)
f.close()
# 예 2
# data = 5
try :
data = 10 / 0 # ZeroDivisionError
except ZeroDivisionError as e:
print(e)
print('결과:', data)
# 예 3 :"w" mode는 없으면 무조건 생성하므로 FileNotFoundError 없음
try :
f = open("dontexist.txt", "w")
f.write("안녕하세요???")
finally : # 반드시 처리해야하는 블록으로 cleanup 하는 코드가 사용
f.close()
# 예 4 : 하나의 try가 여러 개의 Error를 가지는 경우
try :
a = [1, 2, 3]
print(a[3])
print(10 / 0)
except ZeroDivisionError:
print("0으로 나누지 마시오")
except IndexError:
print("List의 인덱스를 잘못 사용")
# 예 5 : 하나의 try가 여러 개의 Error를 가지는 경우
try :
print(10 / 0)
a = [1, 2, 3]
print(a[3])
except (ZeroDivisionError, IndexError) as e :
print(e)
# 예 6 : 오류의 회피 : pass
try :
f = open("temporary.txt")
data = f.read()
except FileNotFoundError as e :
pass
print("끝!!")
댓글 영역