728x90
사용자 정의 에러란?
파이썬에서 사용자 정의 에러는 내장된 예외 클래스(Exception 클래스를 상속한 클래스)를 확장하여 새로운 예외 클래스를 정의하는 것
이렇게 정의된 사용자 정의 에러 클래스는 프로그램에서 특정 조건이나 상황에 대한 예외를 일으킬 때 사용
사용자 정의 에러를 정의함으로써 코드의 가독성을 높이고, 예외 처리를 보다 구체적으로 할 수 있음
사용자 정의 에러 구현 방식
- 내장 예외 클래스(Exception 클래스를 상속)를 상속하여 새로운 클래스를 생성
- 클래스 내부에 필요한 추가적인 메서드나 속성을 정의할 수 있음
예를 들어, __str__ 메서드를 재정의하여 해당 예외가 발생했을 때 출력될 문자열을 지정할 수 있음 - 사용자 정의 에러 클래스를 발생시키기 위해 필요한 조건이나 상황을 프로그램에서 체크하고, 그에 따라 적절한 사용자 정의 에러 객체를 생성하여 raise 키워드를 사용하여 예외를 일으킴
사용자 정의 에러 구현 예시
class UpbitError(Exception):
"""Base 에러 클래스"""
pass
class CreateAskError(UpbitError):
def __str__(self):
return "주문 요청 정보가 올바르지 않습니다."
class CreateBidError(UpbitError):
def __str__(self):
return "주문 요청 정보가 올바르지 않습니다."
class InsufficientFundsAsk(UpbitError):
def __str__(self):
return "매수/매도 가능 잔고가 부족합니다."
class InsufficientFundsBid(UpbitError):
def __str__(self):
return "매수/매도 가능 잔고가 부족합니다.
예시 코드에서는 UpbitError를 기반으로 여러 사용자 정의 에러 클래스를 정의하고 있음
이 코드에서는 주문 요청 정보가 올바르지 않을 때와 매수/매도 가능 잔고가 부족할 때를 처리하기 위해 각각의 사용자 정의 에러 클래스를 구현하고 있음
위에서 구현한 사용자 정의 클래스로 예외를 발생시키는 예시코드는 아래와 같음
# 예시 코드
def create_ask(order_info):
if not is_valid_order_info(order_info):
raise CreateAskError()
def create_bid(order_info):
if not is_valid_order_info(order_info):
raise CreateBidError()
def execute_trade(trade_type, order_info):
if trade_type == 'ask':
try:
create_ask(order_info)
except CreateAskError as e:
print("에러 발생:", e)
elif trade_type == 'bid':
try:
create_bid(order_info)
except CreateBidError as e:
print("에러 발생:", e)
def is_valid_order_info(order_info):
# 주문 요청 정보가 유효한지 확인하는 코드
return True # 예시로 항상 유효하다고 가정
# 테스트
order_info = {'amount': 100, 'price': 50}
execute_trade('ask', order_info)
order_info = {'amount': 100, 'price': 50}
execute_trade('bid', order_info)
위 코드에서는 주문 요청 정보가 유효하지 않을 경우와 매수/매도 가능 잔고가 부족할 경우에 각각의 사용자 정의 에러 클래스를 발생시킴
그리고 execute_trade 함수 내에서 이러한 예외를 처리함
참고
728x90
'Python' 카테고리의 다른 글
Python 루틴, 서브루틴, 코루틴 (1) | 2024.04.04 |
---|---|
Python multiprocessing (0) | 2024.04.04 |
데코레이터 (0) | 2024.04.01 |
파이썬 매직 메서드 (0) | 2024.03.29 |
파이썬 공부할 책 모음 (0) | 2024.03.28 |