시도하는 더 좋은 방법...예외...Python에서 전달
1689 단어 pythonexceptionsprogramming
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")
를 사용하는 습관이 있는 경우 로거에서 예외를 표시하지 않습니다.결론
이미 이 패턴을 사용하고 있다면 무엇을 하고 있는지 알고 있다고 가정합니다. 언급된 단점은 일부에게는 차단제일 수 있습니다. 부작용이 발생하면 가장 가까운 파이썬 전문가에게 문의하십시오.
Reference
이 문제에 관하여(시도하는 더 좋은 방법...예외...Python에서 전달), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smac89/better-way-to-tryexceptpass-in-python-2460텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)