안녕하세요!
이번 글에서는 파이썬의 예외 처리(Exception Handling)에 대해서 알아보려고 합니다.
1) exception
2) try --- except:
3) try --- except --- else:
4) try --- except --- finally:
5) except ErrorName as e: 예외의 정보 얻기
6) raise ErrorName("message") 예외 발생시키기
순서로 알아보겠습니다.
1) Exception
파이썬에서 예외(Exception)는 프로그램이 실행 중에 발생하는 오류를 의미합니다.
예외는 예상치 못한 상황에서 발생하며,
프로그램의 정상적인 흐름을 유지하기 위해 예외 처리(Exception Handling) 기능을 사용할 수 있습니다.
예외 처리 하는 이유는 몇 가지가 있겠지만
제일 큰 이유는 스무스 하게 넘어가기 위해서입니다.
2) try--- except
try:
에러가 날 거 같은 문장
except 에러명:
에러가 발생했을 때 실행할 문장
result = 10 / 0
ZeroDivisionError: division by zero
try:
result = 10 / 0
except ZeroDivisionError:
result = 0
print("0으로 나눌 수 없습니다.") # "0으로 나눌 수 없습니다."
원래라면 ZeroDivisionError 가 발생했어야 됐겠지만 try: except 문을 사용하여
에러가 나도 프로그램이 정상동작하도록 유도하였습니다.
3) try --- except --- else:
위와 거의 동일한 목적으로 사용됩니다.else:는 예외가 발생하면 실행되지 않습니다.
try:
result = 10 / 0
except ZeroDivisionError:
result = 1
print("0으로 나눌 수 없습니다.")
else:
print("결과: else", result) # 출력: X
# 0으로 나눌 수 없습니다.
try:
result = 10 / 1
except ZeroDivisionError:
result = 1
print("0으로 나눌 수 없습니다.")
else:
print("결과: else ", result) # 출력: 결과: else 10.0
# 결과: else 10.0
else:는 에러가 발생하면 실행되지 않지만 에러가 발생하지않으면 실행되는 걸 확인하실 수 있습니다.
4) try --- except --- finally:
else:는 에러가 발생하면 실행되지 않지만
finally는 무조건 try except 절이 끝나고 실행됩니다.
try:
result = 10 / 1
except ZeroDivisionError:
result = 1
print("0으로 나눌 수 없습니다.")
else:
print("결과: else ", result) # 출력: 결과: else 10.0
finally:
print("결과: finally ", result) # 출력: 결과: finally 10.0
# 결과: else 10.0
# 결과: finally 10.0
try:
result = 10 / 0
except ZeroDivisionError:
result = 1
print("0으로 나눌 수 없습니다.")
else:
print("결과: else ", result) #
finally:
print("결과: finally ", result) # 출력: 결과: 1
# 0으로 나눌 수 없습니다.
# 결과: finally 1
finally:는 무조건 실행되는 걸 볼 수 있습니다.
5) exception의 정보 얻기
오류 원인의 파악, 사용자에게 오류 메시지 제공 외 여러 가지의 이유로
except ErrorName as e:로 에러메시지를 받아와서 활용할 수 있습니다.
try:
result = 10 / 0
except ZeroDivisionError as e:
result = 0
print(f"ErrorName Is {e}") # ErrorName Is division by zero
# ErrorName Is division by zero
6) 예외 발생시키기 raise ErrorName("message")
여러 이유로 사용자가 입력을 하는 부분에 있어서 우리가 제공하는 서비스의 데이터 형식에 맞게 입력하도록 유도해야 합니다. raise ErrorName로 에러를 발생시킬 수 있습니다.
try:
age = int(input("나이를 입력하세요: "))
if age < 0:
raise ValueError("나이는 음수일 수 없습니다.")
except ValueError as e:
print("오타 ㄴㄴ", e)
# 나이를 입력하세요:
# -4 입력 시
# 오타 ㄴㄴ 나이는 음수일 수 없습니다.
정리)
1) exception
예외는 프로그램이 실행 되면서 발생하는 오류를 의미하는데 오류는 여러 가지가 있다.
이 오류를 핸들링 하는 방법을 알아보았다.
2) try --- except:
try: 오류가 날거같은 문장except ErrorName: 오류가 발생했을 때 실행할 문장 이런 형식으로 사용한다.
3) try --- except --- else:
try:
오류가 날거같은 문장
except ErrorName:
오류가 발생했을 때 실행할 문장
이런 형식으로 사용한다.
else:
try문을 다 하고 오류가 발생하지 않으면 실행할 문장
4) try --- except --- finally:
try:
오류가 날거같은 문장
except ErrorName:
오류가 발생했을 때 실행할 문장
이런 형식으로 사용한다.
finally:
try문을 다 하고 무조건 실행할 문장
5) except ErrorName as e: 예외의 정보 얻기
except ErrorName as e: 형식으로 사용한다
사용자를 위한 메시지 출력이나 오류 파악 그 외 여러 가지 이유들 때문에 사용한다.
6) raise ErrorName("message") 예외 발생시키기
잘못된 데이터를 받아오거나 프로그램을 중단해야 할 정도의 치명적인 상황일 때 에러를 발생시킬 수 있는데
raise ErrorName("Message") 형식으로 사용한다.
마치면서)
파이썬 공식 문서에서 파이썬 Errors and Exceptions로 예제를 찾아보시면 더욱 자세한 정보를 얻을 수 있습니다.
다음 글에서도 유용한 파이썬 팁과 기능을 소개하도록 하겠습니다
감사합니다.
'파이썬 > 사용법' 카테고리의 다른 글
[python] 파이썬 에러 커스텀하기 (0) | 2023.07.27 |
---|---|
[python] 파이썬 에러(Error)와 예외(Exception) 정리 (0) | 2023.07.26 |
[python] 파이썬 모듈의 사용 (0) | 2023.07.24 |
[python] 파이썬 리스트 자료형 for 문에서의 활용 (0) | 2023.07.23 |
[python] 딕셔너리 자료형 for 문에서의 활용 (0) | 2023.07.23 |