>  기사  >  백엔드 개발  >  파이썬 예외와 오류의 차이점

파이썬 예외와 오류의 차이점

藏色散人
藏色散人원래의
2019-07-03 09:25:455175검색

파이썬 예외와 오류의 차이점

오류 및 예외 개념

오류:

1. 구문 오류: 코드가 인터프리터 또는 컴파일러 구문을 따르지 않습니다

2. 논리 오류: 불완전하거나 잘못된 입력 또는 계산 문제

Exception: 실행 중에 문제가 발생하여 프로그램이 실행되지 않습니다

1. 프로그램에 논리 또는 알고리즘 문제가 발생했습니다

2. 작업 중 컴퓨터 오류(메모리 부족 또는 IO 오류) )

오류와 예외의 차이

Error:

코드 실행 전 구문 또는 논리 오류 , #🎜🎜 #

구문 오류는 실행 전에 수정되고, 논리적 오류는 수정할 수 없습니다.

예외는 두 단계로 구분됩니다.

1. 예외가 생성됩니다. 오류가 감지되고 통역사는 예외라고 생각하고 예외를 발생시킵니다.

2. 예외 처리, 예외 가로채기, 예외 처리를 위해 프로그램 무시 또는 종료

Python 일반적인 오류

Common Error:

under ipython 1. a : NameError

직접 참조

정의되지 않음 2. if True : SyntaxError#🎜 🎜#

Syntax error

3. f = open('1.txt') : IOError

시도할 때 존재하지 않는 파일 열기#🎜🎜 #

4. 10/0 : ZeroDivisionError

5. a = int('dd') : ValueError

강제 유형 변환을 수행할 때 오류 발생

try--예외 처리 제외 (1)

try-제외: 예외 처리

try:
    try_suite
except Exception [, e]:
    exception_block

1.try try_suite에서 오류를 캡처하고 오류를 Except

2에 전달하는 데 사용됩니다. 예외 처리는 캡처된 예외 설정과 일치하는 경우 예외를 처리하는 데 사용됩니다.

예: #🎜🎜 #
try:
    a
except Exception, e:
    print e

try-제외 캡처 예외 분석:

사례 1:

try:
    undef
except:
    print 'catch an except'

사례 2: # 🎜🎜#

try:
    if undef
except:
    print 'catch an except'

case 1: 캡처 가능 예외, 런타임 오류이기 때문에

case 2: 예외는 구문 오류, 사전 실행 오류이기 때문에 catch할 수 없습니다.

사례 3:

try:
    undef
except NameError, e:
    print 'catch an except', e
Case 4:
try:
    undef
except IOError, e:
    print 'catch an except', e

사례 3: 설정이 NameError 예외를 캡처하므로 예외를 포착할 수 있습니다.

사례 4: 예외를 포착할 수 없습니다. IOError가 설정되어 있고 NameError가 설정되어 있고 NameError가 발생했기 때문에 발생했습니다.

try--예외 처리 제외(2)

try-제외: 여러 예외 처리

try:
    try_suite
except Exception1 [e]:
    exception_block1
except Exception2 [e]:
    exception_block2
except ExceptionN [e]:
    exception_blockN

try-ready--else 사용

try:
    try_suite
except Exception1 [e]:
    exception_block1
else:
    none_exception
#🎜🎜 #예외가 없으면 else 문에 있는 코드를 실행합니다.

try--finally 문

try-finally 문:

try:
    try_suite
finally:
    do_finally

1. If try 문은 오류를 캡처하지 않으며 코드는 do_finally 문을 실행합니다

2 . try 문이 오류를 캡처하면 프로그램은 먼저 do_finally 문을 실행한 다음 처리를 위해 캡처된 오류를 Python 해석기에 전달합니다.

#🎜🎜 #try-finally 문:

규칙: try-finally는 예외 감지 여부에 관계없이 finally 코드를 실행합니다.

기능: 파일을 닫거나 시스템 리소스를 해제하기 위한 예외 처리 이벤트에 대한 정리 메커니즘을 제공합니다

try-Exception-finally 사용:

try:
    try_suite
except:
    do_except
finally:
    do_finally

1. try 문이 예외를 포착하지 못하면 try 코드 세그먼트를 실행한 후 finally#🎜🎜 #

2를 실행합니다. 예외가 발생하면 먼저 오류를 처리하기 위해 Except를 실행한 다음 finally

try-read-else-finally를 실행합니다.

try:
    try_suite
except:
    do_except
else:
    do_else
finally:
    do_finally

1인 경우 try 문이 catch되지 않습니다. try 코드 블록을 실행한 후 else 코드 블록을 실행하고 최종적으로 finally

2를 실행합니다. try가 예외를 catch하면 먼저 예외를 실행하여 오류를 처리한 다음 finally#🎜를 실행합니다. 🎜## 🎜🎜#with문

with문:

with context [as var]:

with_suite

#🎜🎜 #1. with 문은 try-Exception-finally 문을 대체하여 코드를 더욱 간결하게 만듭니다.

2 컨텍스트 표현식은 객체를 반환합니다. .var는 컨텍스트 반환 개체, 단일 반환 값 또는 조상을 저장하는 데 사용됩니다.

4.with_suite는 var 변수를 사용하여 컨텍스트 반환 개체에서 작동합니다

… #

#🎜 🎜#raise 및 주장

raise 문

raise 문은 예외를 적극적으로 발생시키는 데 사용됩니다.

#🎜🎜 # 문법 형식: raise [예외 [ , args]]

Exception: 예외 클래스

args: 예외 정보를 설명하는 튜플

예: #🎜 🎜#

raise TypeError
raise TypeError, 'Test Error'
raise IOError, 'File Not Exist'
#🎜🎜 #assert 문

Assertion 문: Assertion 문은 식이 true인지 확인하는 데 사용됩니다. #🎜🎜 #문법 형식 : Assert 표현식 [, args]

expression : 표현식

args : 판단 조건에 대한 설명 정보

예: #🎜🎜 #
assert 7==6
assert 0, 'Test Error'

Python 표준 및 자동 예외 정의

표준 예외: 프로그램이 실행되기 전에 이미 존재하는 Python 내장 예외

사용자 정의 예외: #🎜 🎜#

1.python은 사용자 정의를 허용합니다. 예외는 python

2와 관련되지 않은 비정상적인 상황을 설명하는 데 사용됩니다. 사용자 정의 예외는 Exception 클래스

3을 상속해야 합니다. 예외는 적극적으로만 트리거될 수 있습니다.

사용자 정의 예외 예:

class FileError(IOError):
    pass
raise FileError, 'Test FileError'
 
class CustomError(Exception):
    def __init__(self, info):
        Exception.__init__(self)
        self.errorinfo = info
    def __str__(self):
        return 'CustomError: %s' % self.errorinfo
try:
    raise CustomError('test CustomError')
except CustomError, e:
    print 'Error Info : %s' % e

관련 권장 사항: "

Python tutorial

"

위 내용은 파이썬 예외와 오류의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.