728x90
반응형
예외처리 함수 깔끔하게 하기
호출자 코드와 오류 코드 처리 코드를 분리한다.
1안
class DeviceController:
def shutdown(self):
try:
self.try_shutdown()
except (DeviceControllerError, DeviceShutdownError) as e:
...
logger.error()
def try_shutdown(self):
device = self.get_handle()
device.pause()
device.clear_queue()
device.close()
def get_handle(self, device_id: int):
...
raise DeviceControllerError('Invalid device handle')
2안
def catch_error(catch: tuple):
def decorator(func: Callable):
@functools.wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except catch as e:
logger.error(e)
return wrapper
return decorator
class DeviceController:
@catch_error(catch = (DeviceControllerError, DeviceShutdownError))
def shutdown(self):
device = self.get_handle()
device.pause()
device.clear_queue()
device.close()
def get_handle(self, device_id:int):
...
raise DeviceControllerError('Invalid device handle')
Python 에서 내가 사용 하는 방법
아래와 같이 간단하게 에러 체크를 할수 있다.
def catch_error(func: Callable):
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception as e:
...
logger.error(e)
return wrapper
@catch_error
def my_func():
...
728x90
반응형
'IT > Clean Code' 카테고리의 다른 글
[Clean Code] 9-2 도메인 특화 테스트 (0) | 2021.09.06 |
---|---|
[Clean Code] 9-1 TDD (0) | 2021.09.06 |
[Clean Code] 6-2 객체지향 절차지향 2 (0) | 2021.09.06 |
[Clean Code] 6-1 객체지향 절차지향 (0) | 2021.09.06 |
[Clean Code] 5-1 형식 (0) | 2021.09.06 |