파이썬, 함수에서 발생한 에러를 함수 호출한 곳으로 넘기기
글. 수알치 오상문
[예제 1]
def func(name = None):
try:
if name is None or name == '':
raise NameError('name error') # 강제 예외 발생 (try에서 처리됨)
except Exception as e:
# print('Error:', e)
raise e # 강제 예외 발생 (함수 호출한 곳으로 에러 전달됨)
else:
print('Hello,', name)
return 'OK'
try:
print(func()) # func 함수 호출 및 예외 처리
except NameError as e:
print('NameError:', e)
except Exception as e:
print('Error:', e)
try:
print(func('sualchi')) # func 함수 호출 및 예외 처리
except NameError as e:
print('NameError:', e)
except Exception as e:
print('Error:', e)
[실행 결과]
NameError: name error
Hello, sualchi
[예제 2]
def db_connection():
raise ConnectionError
return '디비연결객체'
conn = None
try:
try:
conn = db_connection() # db 연결 함수 호출 및 예외 처리
except ConnectionError as e: # DB 컨넥션 에러 처리
# 바깥 위치로 에러를 전달
raise RuntimeError('database connetcion error') from e
except Exception as e: # 기타 에러 처리
print('Error:', e)
except RuntimeError as e:
print('RuntimeError:', e)
print('DB 연결에 실패했습니다.')
else:
print('DB 연결에 성공했습니다.')
print('DB 작업을 진행합니다.')
finally:
if conn is not None:
print('DB 연결을 종료합니다.')
[실행 결과]
RuntimeError: database connetcion error
DB 연결에 실패했습니다.
또는
DB 연결에 성공했습니다.
DB 작업을 진행합니다.
DB 연결을 종료합니다.
'Python 활용' 카테고리의 다른 글
파이썬, 사용자 정의 예외 만드는 예제 (0) | 2022.07.24 |
---|---|
파이썬, 호출 함수에서 발생한 예외를 호출한 곳에서 처리 (0) | 2022.07.24 |
파이썬, 코드 문서화에 도움을 주는 독스트링과 스핑크스 (0) | 2022.07.21 |
Python, 빠른 요일/주말 검사 함수 (0) | 2022.06.29 |
파이썬, 부모 경로에 있는 디렉터리 import (0) | 2022.06.28 |