Python/파이썬 기초
[Python] 예외 처리
isfp_yykkng
2023. 2. 19. 23:05
예외 처리
예외 처리는 에러가 발생할 수 있는 코드에서 발생할 에러를 미리 처리하는 과정이다. try-except 구문 대신 if - else를 사용할 수도 있다. ( if - else로 처리할 수 있으면 처리하는 거 권장! )
예외 처리 구조
try :
<에러가 발생할 가능성이 있는 코드>
except <에러 종류> :
<에러가 발생했을 경우 처리할 코드>
# 예외 처리 예제
def safe_pop_print(list, index) :
try:
print(list.pop(index))
except IndexError :
print('{} index의 값을 가져올 수 없습니다.'.format(index)) # index 벗어난 경우 에러 처리
safe_pop_print([1,2,3], 5)
# 예외 처리 예제 -> if-else문
def safe_pop_print(list, index) :
if index < len(list):
print(list.pop(index))
else:
print('{} index의 값을 가져올 수 없습니다.'.format(index)) # index 벗어난 경우 에러 처리
safe_pop_print([1,2,3], 5)
하지만 if-else문으로 바꿀 수 없는 try-except문으로만 처리해야 하는 경우도 있다.
# try except로만 처리 가능 (그 외에도 많음.)
try :
import my_module
except ImportError:
print('모듈이 없습니다.') # my_module이라는 모듈이 없어서 에러 처리
[참고] 파이썬 예외 종류
https://hleecaster.com/python-exception/
파이썬 예외처리 쉽게 이해하기 - 아무튼 워라밸
파이썬에서 발생할 수 있는 예외, 에러의 종류들을 정리하고, 그것들을 어떻게 처리할지 전략을 아주 쉽게 남겨보았다.
hleecaster.com
예외 이름을 모르는 경우 처리방법
ex는 발생한 에러의 이름을 받아오는 변수로 여기에 어떤 에러가 발생했는지 알 수 있다.
try :
<에러가 발생할 가능성이 있는 코드>
except Exception as ex :
print('에러가 발생 했습니다' , ex)
try:
list = []
print(list[0]) # try문에 에러가 발생한 시점에서 바로 except문으로 넘어감
text = 'abc'
number = int(text)
except Exception as ex:
print('에러가 발생했습니다.', ex)
Raise
raise는 사용자가 직접 에러를 발생시키는 기능으로 많이 사용하면 코드를 읽기 어려워지기 때문에 주의해야 한다.
def rsp(mine, yours) :
allowed = ['가위', '바위', '보']
if mine not in allowed:
raise ValueError
if yours not in allowed:
raise ValueError
try:
rsp('가위','바') # '바'는 allowed에 없어서 ValueError를 일으킴(raise)
except ValueError:
print('잘못된 값을 넣은 것 같습니다')