Python 캡 처 코드 의 모든 이상 한 방법

문제.
어떻게 코드 중의 모든 이상 을 포착 합 니까?
해결 방안
모든 이상 을 캡 처 하려 면 Exception 을 직접 캡 처 하면 됩 니 다.

try:
  ...
except Exception as e:
  ...
  log('Reason:', e)    # Important!
이것 은SystemExit,KeyboardInterrupt,GeneratorExit를 제외 한 모든 이상 을 포착 할 것 이다.이 세 가지 이상 을 더 잡 으 려 면ExceptionBaseException로 바 꾸 면 된다.
토론 하 다.
모든 이상 을 포착 하 는 것 은 프로그래머 가 어떤 복잡 한 조작 에서 가능 한 모든 이상 을 기억 하지 못 하기 때문이다.세심 하지 않 은 사람 이 라면 디 버 깅 하기 어 려 운 코드 를 만 드 는 간단 한 방법 이기 도 합 니 다.
그 렇 기 때문에 모든 이상 을 캡 처 하 는 것 을 선택 하면 어 딘 가(예 를 들 어 로그 파일,화면 이상 인쇄)에서 정확 한 원인 을 인쇄 하 는 것 이 중요 합 니 다.만약 당신 이 이렇게 하지 않 았 다 면,가끔 이상 한 인쇄 를 볼 때 머리 를 쓰 지 못 할 수도 있 습 니 다.아래 와 같이:

def parse_int(s):
  try:
    n = int(v)
  except Exception:
    print("Couldn't parse")
이 함 수 를 실행 해 보 세 요.결 과 는 다음 과 같 습 니 다.

>>> parse_int('n/a')
Couldn't parse
>>> parse_int('42')
Couldn't parse
>>>
이 럴 때 너 는 머리 를 긁 적 이 며"이게 무슨 일이 야?"라 고 생각한다.만약 당신 이 아래 와 같이 이 함 수 를 다시 쓴다 면:

def parse_int(s):
  try:
    n = int(v)
  except Exception as e:
    print("Couldn't parse")
    print('Reason:', e)
이 때 다음 출력 을 가 져 올 수 있 습 니 다.프로 그래 밍 오류 가 있 습 니 다.

>>> parse_int('42')
Couldn't parse
Reason: global name 'v' is not defined
>>>
가능 한 한 이상 처리 장 치 를 정확하게 정의 해 야 한 다 는 것 이 분명 하 다.그러나 모든 이상 을 포착 하고 정확 한 진단 정 보 를 인쇄 하거나 이상 을 전파 해 야 한다 면 이상 을 잃 지 않 을 것 이다.
이상 은 Python 캡 처 코드 의 모든 이상 한 방법 에 대한 상세 한 내용 입 니 다.Python 캡 처 이상 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기