시도하는 더 좋은 방법...예외...Python에서 전달

사람들이 파이썬에서 사용하는 일반적인 '시도, 예외, 무시' 패턴은 다음과 같습니다.

try:
  # do something that might raise
except (MyError1, MyError2, etc) as err:
  pass


만약 당신이 그런 일을 하고 있는 자신을 발견했다면, 나는 당신에게 그만하라고 말하는 것이 아니라 더 나은 방법을 보여줄 것입니다.

contextlib.suppress 내장 기능 소개


suppress 를 사용하여 위 구문을 다음과 같이 변환할 수 있습니다.
파이썬 3.4 이상이 필요합니다

from contextlib import suppress
with suppress(MyError1, MyError2, etc):
  # do something that might raise


그리고 4줄에서 멋지게 압축된 2줄로 되었습니다.

장점



이것으로부터 무엇을 얻습니까? 예외를 무시하려는 사용자의 의도를 명확히 하는 더 짧고 간결한 코드입니다.

단점



예외는 컨텍스트 외부에서는 절대 표시되지 않으므로 로그를 잘 보관하고 있고 logger.exception("I tried to do something") 를 사용하는 습관이 있는 경우 로거에서 예외를 표시하지 않습니다.

결론



이미 이 패턴을 사용하고 있다면 무엇을 하고 있는지 알고 있다고 가정합니다. 언급된 단점은 일부에게는 차단제일 수 있습니다. 부작용이 발생하면 가장 가까운 파이썬 전문가에게 문의하십시오.

좋은 웹페이지 즐겨찾기