IT/Clean Code
[Clean Code] 7-1 예외처리
상쾌한기분
2021. 9. 6. 00:03
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
반응형