"Life is too short, You need python"
코드를 작성하다보면 예기치못한 오류를 마주할 수 있습니다. 이때 오류에 대한 적절한 대응, 예기지 못한 상황을 피하기 위한 방안을 try ~ except를 사용할 수 있다.
Try ~ Exception 예외 처리 문법
try:
# 정상 동작 시 코드
except (오류 종류 as e):
# 예외가 발생 시 적용 코드
else:
# 예외가 발생하지 않았을(오류가 없었을) 경우 실행할 코드
finally:
# 예외 발생 여부에 상관없이 항상 수행
1. Try ~ Exception 예외 처리 기본 형태
try:
# 정상 동작 시 수행 코드
except:
# 오류 발생 시 수행 코드
이 경우는 오류 종류에 무관하게 오류 발생 시 except 블록을 수행합니다.
try:
# 정상 동작 시 수행 코드
except Exception(오류종류):
# 오류 발생 시 수행 코드
오류가 발생 시 except문에 미리 정해 놓은 오류 이름과 일치할 때 except 블록을 수행합니다.
try:
# 정상 동작 시 수행 코드
except Exception(오류종류) as e:
print(e)
오류 메시지의 내용 출력을 원할 때 사용하는 방법이다. 아래는 사용 예입니다.
(코드 입력)
try:
12 / 0
except ZeroDivisionError as e:
print(e)
(출력 결과)
division by zero
2. Try ~ Finally
try문에는 finally절을 사용할 수 있습니다. finally은 try문 수행 도중 예외 발생 여부와 무관하게 항상 수행됩니다.
보통 finally절은 사용한 리소스를 close해야 할 때에 많이 사용합니다.
f = open('sales_report.csv', 'r')
try:
# 정상 동작 시 수행 코드
finally:
f.close() # 오류 여부와 무관하게 무조건 close 수행
sales_report.csv 파일을 읽기 모드로 연 후 try문을 수행 합니다. 예외 발생 여부와 상관없이 finally절에서 f.close()로 열린 파일을 닫을 수 있다.
3. 다수의 오류 처리
try:
# 정상 동작 시 코드
except Exception_1(오류종류):
# 예외가 발생 시 적용 코드
except Exception_2(오류종류):
# 예외가 발생 시 적용 코드
각각 다른 오류에 대해 명령을 수행 할 수 있습니다.
(코드 입력)
try:
prit(a)
print(a)
except NameError as e:
print(e)
except SyntaxError as e:
print(e)
(출력 결과)
name 'prit' is not defined
Syntax Error와 Name Error 모두 발생하지만 먼저 발생하는 오류가 출력됩니다. Syntax 오류가 먼저 발생했기 때문에 Name Error는 발생하지 않습니다.
except (IndexError, ValueError) as e:
print(e)
2개 이상의 오류의 동일한 명령 수행 시 위와 같이 괄호를 사용하여 함께 묶어 간소화 할 수 있습니다.
4. Try ~ Except ~ Else
(코드 입력)
try:
operation_that_can_throw_ioerror()
except IOError:
handle_the_exception_somehow()
else:
# we don't want to catch the IOError if it's raised
another_operation_that_can_throw_ioerror()
finally:
something_we_always_need_to_do()
else절은 except절 다음에 와야 하며 try에서 예외가 발생하지 않는 경우에 유용합니다.
else 절을 사용하면 try ... except 문으로 보호되는 코드에 의해 발생하지 않은 예외를 실수로 catch하지 않기 때문에 try 절에 추가 코드를 추가하는 것보다 낫습니다.라고 설명하고 있습니다.
5. 오류 코드
Exception = 모든 에러
SyntaxError = 문법 오류
NameError = 해당 변수 없음
IndexError = 없는 인덱스
KeyError = 없는 키
AttributeError = 속성 오류
ValueError = 해당 값 없음
FileNotFoundError = 파일 없음
TypeError = 데이터 타입이 맞지 않을 때
마무리
오류 발생 처리 방법 ( Try ~ Exception )에 대해 알아보았습니다.
'PYTHON > Tips' 카테고리의 다른 글
(5min. Python) Round, Ceil, Floor ( 반올림, 올림, 내림 ) and trunc ( 그리고 버림 ) (0) | 2022.06.29 |
---|---|
(5min. Python) Slice / Slicing, 슬라이싱의 이해 ( ASCII art diagram ) (0) | 2022.06.28 |
(Python/Basic) Print 활용 TIP(feat. datetime) (0) | 2022.06.25 |
(Python/OS) os.path.getctime() / os.path.getmtime() 파일의 생성/수정 날짜 확인 (0) | 2022.06.15 |
(Python/Pandas) Format a number (천 단위 구분 기호 및 기타 서식 적용) (0) | 2022.06.13 |