시도: 가장 유행하는 문제 제외

6671 단어

무엇이 이상 처리입니까?


이상 처리는 프로그래밍 언어의 한 메커니즘으로 프로그램이 실행할 때 오류와 다른 발생할 수 있는 문제(이상)에 대한 응답을 설명하는 데 목적을 둔다. 이런 문제는 프로그램이 실행하는 동안 발생할 수 있고 프로그램이 기본 알고리즘을 더 이상 처리할 수 없게 된다.
파이썬 코드는 raise 키워드를 사용하여 예외를 생성할 수 있습니다.이상 대상은 그 다음에 지정됩니다.이상 클래스를 지정할 수 있습니다. 이 경우 파라미터가 없는 구조 함수를 자동으로 호출합니다.raise는 BaseException 클래스와 그 계승자의 실례를 비정상적으로 던지거나 (Python 2에서) 구형 클래스의 실례로만 던질 수 있습니다.

try-finally 구조 제외


try:
    # some code
finally:
    # some code
예를 들어try 블록에 오류가 발생하면finally 블록은 실행되고 내부에서 '정리' 를 실행할 수 있습니다.

어떻게 다른 방식으로 이상을 정확하게 처리합니까


그 밖에 블록은 위에서 아래로 처리되고 제어권은 하나의 처리 프로그램에만 전달된다.따라서 상속 차원 구조의 이상을 서로 다른 방식으로 처리할 필요가 있다면 먼저 흔하지 않은 이상에 대해 처리 프로그램을 지정한 다음에 더욱 흔한 이상에 대해 처리 프로그램을 지정해야 한다.이것이 바로 bare Exception이 마지막일 수밖에 없는 이유입니다(그렇지 않으면 Syntax Error).만약 먼저 더 일반적인 이상 처리 프로그램을 설치한다면, 그다지 일반적인 이상 처리 프로그램은 무시될 것이다.

만약 except 블록이 처리 오류가 없다면, 무슨 일이 일어날까요


지정한 except 블록이 차단되어 이상이 없으면, 가장 가까운 외부try/except 블록에 의해 차단되며, 이 블록은 해당하는 처리 프로그램을 가지고 있습니다.만약 프로그램이 이상을 전혀 포착하지 않았다면, 해석기는 프로그램 실행을 중지하고, 이상에 대한 정보를 표준sys에 출력할 것입니다.stderr 오류 흐름.이 규칙에는 두 가지 예외가 있다.
  • 대상 분석 함수에 이상이 발생하면 프로그램 실행이 종료되지 않으며 이상 정보가 있는'이상 무시'경고는 표준 오류 흐름으로 출력됩니다.
  • 시스템이 종료되면 프로그램이 종료되고 화면에 이상에 대한 정보를 표시하지 않습니다(분석 함수의 이전 부분에 적용되지 않으며 이 이상 행위는 다른 이상과 같습니다).
  • 만약 이상을 차단하고 조작을 집행하며 다시 같은 이상을 일으킬 필요가 있다면 어떻게 해야 합니까


    이상 처리 프로그램에서 일부 조작을 실행한 다음, 이상을 더 높은 단계의 처리 프로그램 (즉 같은 이상을 다시 던지는 것) 에 전달하고,raise 키워드를 사용할 때 파라미터를 사용하지 않습니다.
    try:
        1 / 0
    except ZeroDivisionError:
      # some logic
      raise
    

    이상 링크는 무엇입니까?


    Python 3에서 exception 블록에 이상이 발생하면 이전 이상은 context 데이터 속성에 저장되며, 새로운 이상이 처리되지 않으면 이전 이상을 처리하는 동안 새로운 이상이 발생한 정보를 출력합니다. ("상기 이상을 처리하는 동안 다른 이상이 발생했습니다:")이상을 체인에 연결하거나 낡은 이상을 새 이상으로 바꿀 수도 있습니다.이렇게 하려면 이전 제외에서 새 제외 또는 비구조에서 새 제외 제안을 사용합니다.첫 번째 경우, 지정한 이상은cause 속성에 저장되며,suppress context 속성 (상하문의 이상 출력 억제) 은 True로 설정됩니다.그런 다음 새 예외를 처리하지 않으면 이전 예외가 새 예외의 원인이라는 정보가 표시됩니다("위 예외가 다음 예외의 직접적인 원인입니다.").두 번째 경우 suppress context는 True, cause는 None으로 설정됩니다.그리고 이상을 던지면 새로운 이상으로 바뀝니다. (낡은 이상은 상하문에 저장되어 있지만.)
    Python 2에서 연결 예외가 없습니다.exception 블록에서 던진 모든 이상은 오래된 이상을 대체합니다.

    Else 블록은 뭐 하는 곳이에요?


    try 블록을 실행하는 동안 이상이 없으면 else 블록을 실행합니다.이것은 주어진try/except 블록에서 처리해야 할 이상을 초래할 수 있는 코드와 더 높은 단계에서 캡처해야 할 같은 종류의 이상을 초래할 수 있는 코드를 분리하고try 블록의 문장 수를 최소화하기 위한 것이다.

    이상 구조 함수에 전달할 수 있는 것은 무엇입니까


    이상은 이름이 없는 매개 변수를 구조 함수 매개 변수로 사용할 수 있습니다.그것들은 ARgs 데이터 속성에 원조 (불변 목록) 로 놓여 있다.일반적으로 오류 메시지를 포함하는 문자열 매개 변수만 사용합니다.모든 예외적인 상황에서str 방법을 정의했고 기본적으로 str (self.args) 를 호출합니다.Python2에는 또 하나의 메시지 속성이 있습니다.len(args)==1이면args[0]가 이 속성에 있습니다.

    예외 클래스


    기본:


  • BaseException은 모든 예외의 기본 클래스입니다.
    Exception은 BaseException의 후속 클래스로 프로그램의 종료를 강제하지 않는 모든 표준 이상과 사용자 정의 이상을 표시하지 않는 기본 클래스입니다.

  • StandardError(Python 2)는 StopIteration,GeneratorExit,KeyboardInterrupt,SystemExit를 제외한 모든 내장된 이상 기류이다.

  • 산술 오류는 산술 연산과 관련된 모든 이상한 기류이다.

  • BufferError는 버퍼의 작업과 관련된 예외의 기본 클래스입니다.

  • LookupError는 잘못된 컬렉션 키 또는 색인과 관련된 예외의 기본 클래스입니다.

  • EnvironmentError(Python 2)는 Python 해석기 외부에서 발생한 오류와 관련된 예외의 기본 클래스입니다.Python3에서 OSError의 역할이 수행됩니다.
  • 일부 특정 표준 예외는 다음과 같습니다.


  • AssertionError - assert 문에서 조건이 실패했습니다.

  • AttributeError- 속성에 액세스하는 동안 오류가 발생했습니다.

  • 부동 소수점 오류 - 부동 소수점 동작의 오류입니다.

  • ImportError-모듈에서 모듈 또는 이름을 가져오는 중 오류가 발생했습니다.

  • 목록과 같은 인덱스에 대한 인덱스가 잘못되었습니다.

  • 키보드 인터럽트 - 콘솔에서 Ctrl+C를 눌러 프로그램을 종료합니다.

  • 기억이 틀렸다. 기억이 부족하다.

  • NameError - 이름을 찾을 수 없습니다.

  • NotImplementedError - 작업이 수행되지 않았습니다.그 목적 중의 하나는 추상적인 방법을 만드는 것이다.

  • OSError는 시스템 오류입니다.

  • 오버플로우 오류 - 산술 연산의 결과가 너무 커서 표시할 수 없습니다.

  • RuntimeError는 일반적인 런타임 오류이며 범주에 속하지 않습니다.

  • Syntax Error - 구문 오류입니다.

  • 들여쓰기 오류 - SyntaxError 하위 클래스 - 들여쓰기가 잘못되었습니다.

  • TabError는 IndentationError의 하위 클래스로, 탭과 공백을 함께 사용합니다.

  • SystemError는 중요하지 않은 내부 해석기 오류입니다.이 이상이 발생하면 사이트 버그에 오류 보고서를 남겨야 합니다.구렁이.조직

  • SystemExit는 sys에서 생성한 예외입니다.exit () 함수.프로그램을 종료하는 데 사용합니다.

  • TypeError- 데이터 유형이 일치하지 않는 오류입니다.

  • UnboundLocalError-NameError 하위 클래스 - 존재하지 않는 로컬 변수에 액세스합니다.

  • ValueError - 함수나 작업에 올바른 유형의 객체를 전달할 때 생성되지만 값이 정확하지 않은 경우 Indexer Ror와 같은 더 정확한 예외로 설명할 수 없습니다.

  • ZeroDivisionError-가 0으로 제거됩니다.
  • SyntaxError를 처리할 수 있는 경우


    Python 파서에서 언어 사양에 맞지 않고 해석할 수 없는 코드가 발생하면 구문 오류가 발생합니다.주 모듈에서 문법 오류가 발생할 때 프로그램 실행이 시작되기 전에 차단할 수 없기 때문에 파이썬 문서의 초보자 강좌는 문법 오류와 이상을 분리하기도 한다.그러나 Syntax Error 역시 exception 에서 상속된 예외이며, 어떤 경우에는 실행 중 발생하고 처리될 수 있습니다. 즉,
  • 모듈 문법 오류 가져오기;
  • 문자열로 eval 또는 exec 함수에 전달된 코드의 문법 오류입니다.
  • 제 이상을 만들어도 될까요?


    그래.그들은 반드시 예외 계급의 상속인이어야 한다."관례에 따라, 이상을 명명하여, 클래스의 이름을""Error""라는 단어로 끝냅니다."

    경고 및 자신의 경고를 만드는 방법


    경고는 일반적으로 오류 행위가 보장되지 않고 프로그램이 계속 작업을 할 수 있는 상황에서 표시되지만 사용자에게 어떤 상황을 알려야 한다.경고의 기본 클래스는 Warning이며 Exception에서 상속됩니다.사용자 경고의 기본 경고 상속기 클래스는 UserWarning입니다.

    경고 모듈의 용도는 무엇입니까?


    경고 모듈에는 경고를 처리하는 기능이 포함되어 있습니다.주요하게warn 함수는 메시지 문자열이나 경고 클래스나 하위 클래스의 실례(이 예에서 클래스 파라미터는 자동으로 설정됨)와 두 가지 선택할 수 있는 파라미터를 받아들일 수 있다. 클래스(기본값-UserWarning) - 경고 클래스와 창고 레벨(기본값-1) - 함수 삽입 레벨,이 점에서부터 호출된 창고의 내용을 출력할 필요가 있다(예를 들어 출력 경고의 포장 함수에 매우 유용하다. 그 중에서 Stack level=2는 경고로 설정해야 한다. 이것은 함수 자체가 아니라 이 함수를 호출하는 위치를 가리킨다).

    당신의 성공을 축원합니다!


    Write me on Face....oh...Meta

    좋은 웹페이지 즐겨찾기