파이썬, 호출 함수에서 발생한 예외를 호출한 곳에서 처리
글. 수알치 오상문
호출 함수에서 발생한 예외를 호출한 곳에서 한꺼번에 처리하는 예제이다. func1, func2, func3, func4 함수는 예외 발생을 테스트하기 위한 함수들이다. 그리고 아래 부분에서 그 함수들을 호출하여 예외를 처리하는 구조이다.
def func1(n):
print(10//n) # n이 0이면 ZeroDivisionError 예외 발생
def func2():
n = 10 # 이 부분을 설명문 처리하면 에러 발생
try:
print(n) # n 이름이 존재하지 않으면 NameError 예외 발생
except NameError:
raise NameError('Not found "n" ')
return True
def func3():
v = '20' # v = '이십'이면 ValueError 예외 발생
print(int(v))
def func4():
print(10 + 20) # (10 + '20')이면 TypeError 예외 발생
# ---------------------------------------------------
# 호출 함수에서 발생한 예외를 받아서 한 곳에서 처리하는 예
# 에러가 발생하면 나머지 함수 호출은 무시한다.
# 함수별로 예외를 취급하려면 try ~ except을 함수별로 분리하자.
# ---------------------------------------------------
try:
func1(10) # func1(0)이면 ZeroDivisionError 예외 발생
func2()
func3()
func4()
except NameError as e:
print("NameError:", e)
except ValueError as e:
print("ValueError:", e)
except TypeError as e:
print("TypeError:", e)
except ZeroDivisionError as e:
print("ZeroDivisionError:", e)
[실행 결과] 예외 발생 위치에 따라서 다음과 같은 결과 메시지를 볼 수 있다.
NameError: Not found "n"
TypeError: unsupported operand type(s) for +: 'int' and 'str'
ValueError: invalid literal for int() with base 10: '이십'
TypeError: unsupported operand type(s) for +: 'int' and 'str'
'Python 활용' 카테고리의 다른 글
파이썬, 에러 예외 종류 (0) | 2022.07.24 |
---|---|
파이썬, 사용자 정의 예외 만드는 예제 (0) | 2022.07.24 |
파이썬, 함수에서 발생한 에러를 함수 호출한 곳으로 넘기기 (0) | 2022.07.23 |
파이썬, 코드 문서화에 도움을 주는 독스트링과 스핑크스 (0) | 2022.07.21 |
Python, 빠른 요일/주말 검사 함수 (0) | 2022.06.29 |