Programing

파이썬 : 예외를 무시하고 진행하는 방법?

lottogame 2020. 3. 2. 12:59
반응형

파이썬 : 예외를 무시하고 진행하는 방법? [복제]


이 질문에는 이미 답변이 있습니다.

코드에 try ... except 블록이 있고 예외가 발생했을 때. 이 경우 코드를 계속 사용하고 싶습니다.이 경우 모든 것이 여전히 잘 실행될 수 있기 때문입니다. except : 블록을 비워 두거나 #do nothing으로두면 구문 오류가 발생합니다. 루프에 없기 때문에 continue를 사용할 수 없습니다. 코드를 계속 사용하도록 지시하는 키워드가 있습니까?


except:
    pass

pass 문에 대한 파이썬 문서


일반적인 답변

파이썬에서 표준 "nop"은 다음 pass과 같습니다.

try:
    do_something()
except Exception:
    pass

사용 except Exception베어 대신 except잡기 예외가 좋아 피하기 SystemExit, KeyboardInterrupt

파이썬 2

Python 2에서 마지막으로 throw 된 예외가 기억되기 때문에 예외 발생 문과 관련된 일부 개체는 무기한으로 유지됩니다 (실제로 다음 예외까지). 이것이 당신에게 중요하고 (일반적으로) 마지막으로 throw 된 예외를 기억할 필요가없는 경우 대신 다음을 수행 할 수 있습니다 pass.

try:
    do_something()
except Exception:
    sys.exc_clear()

마지막으로 발생한 예외가 지워집니다.

파이썬 3

Python 3에서 예외 인스턴스를 보유한 변수 블록 을 종료 할 삭제됩니다except . 변수가 이전에 값을 보유 했더라도 except블록 을 시작하고 종료 한 후에 다시 정의되지 않습니다 .


파이썬 3.4에서이를 수행하는 새로운 방법이 있습니다.

from contextlib import suppress

with suppress(Exception):
  # your code

추가 한 커밋은 다음과 같습니다. http://hg.python.org/cpython/rev/406b47c64480

그리고 저자 Raymond Hettinger는 이것과 다른 모든 종류의 파이썬 인기에 대해 이야기합니다 (43:30의 관련 비트) : http://www.youtube.com/watch?v=OSGv2VnC0go

베어 except키워드 를 에뮬레이션하고 KeyboardInterrupt일반적으로 그렇지 않지만 다음 과 같은 것을 무시 하려는 경우을 사용할 수 있습니다 with suppress(BaseException).

편집 : 3.4 릴리스 이전 ignored으로 이름이 변경된 것 같습니다 suppress.


이 시도:

try:
    blah()
except:
    pass

참고 URL : https://stackoverflow.com/questions/574730/python-how-to-ignore-an-exception-and-proceed



반응형