이 기사는 Python 오류, 예외 및 프로그램 디버깅 방법(코드 포함)을 소개합니다. 필요한 친구가 참고할 수 있기를 바랍니다.
예외는 실행 중에 Python 프로그램으로 인해 발생하는 오류입니다. 프로그램에서 처리되지 않은 예외가 발생하면 프로그램에 예외 처리를 추가해야만 프로그램이 종료됩니다. 건장한".
Python에는 예외 처리를 위한 고유한 문법 형식이 있습니다. Python에서 예외 처리 및 프로그램 디버깅 방법을 익히세요. 주요 내용은 다음과 같습니다.
는 Python 언어의 키워드 철자 오류, 변수 이름, 함수 이름 등의 철자 오류입니다.
키워드 철자가 틀리면팁이 표시됩니다.
SyntaxError(语法错误)
,而变量名、函数名拼写错误会在运行时给出NameError的错误
2. 스크립트 프로그램이 Python 구문 사양을 준수하지 않습니다
예를 들어 대괄호, 콜론 및 기타 기호가 누락되고 작성 시 표현식 오류가 있습니다.
3. 들여쓰기 오류
Python 구문에서는 들여쓰기가 프로그램의 구문 중 하나이며 Python 언어의 고유한 측면이어야 한다고 규정하기 때문입니다. 일반적으로 Python의 표준 들여쓰기는 4개의 공백입니다. 물론 각자의 습관에 맞게 Tab을 사용해도 됩니다. 그러나 동일한 프로그램이나 프로젝트에서는 동일한 들여쓰기 스타일을 일관되게 사용해야 합니다.
7.2 예외 처리 예외는 실행 중에 Python 프로그램으로 인해 발생하는 오류입니다. 프로그램에서 처리되지 않은 예외가 발생하면 해당 예외로 인해 스크립트가 종료됩니다. 프로그램에서 이러한 예외를 포착하고 관련 처리를 수행해야만 프로그램이 중단되지 않을 수 있습니다. 7.2.1 예외 처리를 위한 기본 구문 try 문은 Python의 다른 문과 마찬가지로 Python의 다른 문과 마찬가지로 들여쓰기 구조를 사용합니다. try 문에는 선택적인 else 블록도 있습니다. 일반적인 try 문의 기본 형태는 다음과 같습니다.try: <语句(块)> #可能产生异常的语句(块) except <异常名1>: #要处理的异常 <语句(块)> #异常处理语句 except <异常名2>: #要处理的异常 <语句(块)> #异常处理语句 else: <语句(块)> #未触发异常,则执行该语句(块) finally: <语句(块)> #始终执行该语,一般为了达到释放资源等目的
실제 응용 프로그램에서는 일부 명령문을 프로그램의 필요에 따라 사용할 수 있습니다. 일반적인 형식은 다음과 같습니다.
양식 1: # 🎜🎜 #
try: <语句(块)> except <异常名1>: <语句(块)>
예:
def testTry (index, flag=False): stulst = ["John","Jenny","Tom"] if flag: #flag为True时,捕获异常 try: astu = stulst [index] except IndexError: print("IndexError") return "Try Test Finished!" else: #flag为False时,不捕获异常 astu =stulst [index] return "No Try Test Finished!" print("Right params testing start...") print (testTry (1, True)) #不越界参数,捕获异常(正常) print (testTry (1, False)) #不越界参数,不捕获异常(正常) print("Error params testing start...") print (testTry (4, True)) #越界参数,捕获异常(正常) print (testTry (4, False)) #越界参数,不捕获异常(程序运行会中断)
양식 2:
try: <语句(块)> except < 异常名1>: <语句(块)> finally: <语句(块)>
def testTryFinally (index):
stulst = ["John","Jenny", "Tom"]
af = open ("my.txt", 'wt+')
try:
af.write(stulst[index])
except:
pass
finally:
af.close() #无论是否产生越界异常,都关闭文件
print("File already had been closed!")
print('No IndexError...')
testTryFinally (1) #无越界异常,正常关闭文件
print('IndexError...')
testTryFinally (4) #有越界异常,正常关闭文件
Python의 일반적인 예외는 미리 정의되어 있습니다. 대화형 환경에서 dir(__buildins__) 명령을 사용하면 사전 정의된 모든 예외가 표시됩니다. ### ## ## ## ## #####예외 이름######설명### ## ## ## ## 🎜🎜# #AttributeError
존재하지 않는 메서드를 호출하여 발생한 예외 EOFErrorImportError | |
---|---|
범위를 벗어난 목록으로 인해 발생한 예외 | |
I/O 작업으로 인해 발생한 예외 , 파일 열기 오류 등 | |
사전에 없는 키워드를 사용하여 발생한 예외#🎜🎜 # | #🎜🎜 # | NameError
TabError# 🎜🎜# | |
ValueError | |
ZeropisionError | |
except语句主要有以下几种用法: except: #捕获所有异常; except <异常名>: #捕获指定异常; except (异常名1,异常名2): #捕获异常名1或者异常名2; except <异常名> as <数据>: #捕获指定异常及其附加的数据; except(异常名1,异常名2)as <数据>: #捕获异常名1或者异常名2及异常的附加数据。 로그인 후 복사 7.3 手工抛出异常为了程序的需要,程序员还可以自定义新的异常类型,例如对用户输入文本的长度有要求,则可以使用raise引发异常,以确保文本输入的长度符合要求。 7.3.1 用raise手工抛出异常使用raise引发异常十分简单,raise有以下几种使用方式。 raise 异常名 def testRaise2(): for i in range (5): try: if i==2: #i==2抛出NameError异常 raise NameError except NameError: print('Raise a NameError!') print (i) print('end...') testRaise2 () 로그인 후 복사 运行结果: 0 1 Raise a NameError! 2 3 4 end... 로그인 후 복사 7.3.2 assert语句assert语句的一般形式如下。 assert <条件测试>, <异常附加数据> #其中异常附加数据是可选的 로그인 후 복사 assert语句是简化的raise语句,它引发异常的前提是其后面的条件测试为假。 举例: def testAssert(): for i in range (3): try: assert i<2 except AssertionError: print('Raise a AssertionError!') print (i) print('end...') testAssert() 로그인 후 복사 运行结果: 0 1 Raise a AssertionError! 2 end... 로그인 후 복사 assert语句一般用于在程序开发时测试代码的有效性。比如某个变量的值必须在一定范围内,而运行时得到的值不符合要求,则引发该异常,对开发者予以提示。所以一般在程序开发中,不去捕获这个异常,而是让它中断程序。原因是程序中已经出现了问题,不应继续运行。 assert语句并不是总是运行的,只有Python内置的一个特殊变量__debug__为True时才运行。要关闭程序中的assert语句就使用python-O(短画线,后接大写字母O)来运行程序。 7.3.3 自定义异常类在Python中定义异常类不用从基础完全自己定义,只要通过继承Exception类来创建自己的异常类。异常类的定义和其他类没有区别,最简单的自定义异常类甚至可以只继承Exception类,类体为pass如: class MyError (Exception): #继承Exception类 pass 로그인 후 복사 如果需要异常类带有一定的提示信息,也可以重载__init__和__str__这两个方法。【相关推荐:python视频教程】 |
위 내용은 Python 오류, 예외 및 프로그램 디버깅 방법 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!