>백엔드 개발 >파이썬 튜토리얼 >Python에서 예외를 처리하는 방법은 무엇입니까?

Python에서 예외를 처리하는 방법은 무엇입니까?

anonymity
anonymity원래의
2019-06-17 09:38:053608검색

예외 처리 사용법: 프로그램의 견고성과 내결함성을 보장하려면, 즉 오류가 발생해도 프로그램이 중단되지 않도록 하려면 예외를 처리해야 합니다.

# 🎜🎜#

Python에서 예외를 처리하는 방법은 무엇입니까?

1, 오류가 발생하는 조건이 예측 가능한 경우 if를 사용하여 오류가 발생하기 전에 이를 처리하고 방지해야 합니다 #🎜 🎜#
AGE=10
while True:
    age=input('>>: ').strip()
    if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的
        age=int(age)
        if age == AGE:
            print('you got it')
            break

2, 오류가 발생하는 조건을 예측할 수 없는 경우 try..Exception을 사용해야 합니다. 오류 발생 후 처리

#기본 구문은 #🎜🎜입니다. #

try:#🎜 🎜#

감지된 코드 블록

Exception 예외 유형:

일단 try에서 예외가 감지되면 이 논리는 다음과 같습니다. location이 실행됩니다

#举例
try:
    f=open('a.txt')
    g=(line.strip() for line in f)
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
except StopIteration:
    f.close()
# 🎜🎜#5. try...Exception의 자세한 사용법...

try 모듈에 오류가 발생할 수 있는 구문을 넣어서 처리합니다. 예외. Except는 특정 예외 또는 괄호 안의 예외 집합을 처리할 수 있습니다. Except 뒤에 예외가 지정되지 않으면 기본적으로 모든 예외가 처리됩니다. 각 시도에는 하나 이상의 Except

🎜🎜#1이 있어야 합니다. 예외 클래스는 지정된 예외만 처리할 수 있습니다.

s1 = 'hello'
try:
    int(s1)
except IndexError as e: # 未捕获到异常,程序直接报错
    print e

2 , more Branch

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)

3, 범용 예외 Exception

s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print(e)

4, 다중 분기+Exception

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
    print(e)

5, 기타 예외 메커니즘(try. ..finally 구문)

try...finally 문은 예외 발생 여부에 관계없이 최종 코드를 실행합니다. 구문은 다음과 같습니다:

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

예:

s1 = &#39;hello&#39;
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
#except Exception as e:
#    print(e)
else:
    print('try内代码块没有异常则执行我')
finally:
    print('无论异常与否,都会执行该模块,通常是进行清理工作')

6, 적극적으로 예외 트리거(raise 문)

raise 문을 사용하여 다음을 수행할 수 있습니다. 스스로 예외를 발생시킵니다. 구문 형식은 다음과 같습니다.

raise [Exception [, args [, traceback]]]

문의 예외는 예외 유형(예: NameError)이고 매개 변수는 예외 매개 변수 값입니다. 이 매개변수는 선택사항입니다. 제공되지 않은 경우 예외 매개변수는 "None"입니다.

마지막 매개변수는 선택사항이며(실제로는 거의 사용되지 않음) 존재하는 경우 추적 예외 개체입니다.

예:

예외는 문자열, 클래스 또는 개체일 수 있습니다. Python 커널에서 제공되는 대부분의 예외는 클래스 인스턴스의 매개변수인 인스턴스화된 클래스입니다.

예외 정의는 다음과 같이 매우 간단합니다:

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行
try:
    raise TypeError(&#39;类型错误&#39;)
except Exception as e:
    print(e)

7, 사용자 정의 예외

새 예외 클래스를 생성하여 프로그램은 다음과 같은 이름을 지정할 수 있습니다. 그들만의 예외. 예외는 일반적으로 Exception 클래스에서 직접 또는 간접적으로 상속되어야 합니다.

다음은 BaseException과 관련된 예제입니다. 예제에서는 기본 클래스가 BaseException이며, 이는 예외가 발생했을 때 더 많은 정보를 출력하는 데 사용됩니다.

try 문 블록에서는 사용자 정의 예외 이후에 Except 블록 문이 실행됩니다. 변수 e는 Networkerror 클래스의 인스턴스를 만드는 데 사용됩니다.

class Networkerror(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg
 
try:
    raise Networkerror(&#39;类型错误&#39;)
except Networkerror as e:
    print(e)

8, 주장: 조건 주장

assert 1 == 1 
assert 1 == 2

9, 요약 시도...제외

1, 실제 작업과 별도의 오류 처리

2, 코드가 정리하기 쉽고 명확하며 복잡한 작업을 구현하기가 더 쉽습니다.

3, 더 안전하고 작은 과실로 인해 프로그램이 우발적으로 충돌하지 않을 것이라는 데는 의심의 여지가 없습니다

위 내용은 Python에서 예외를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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