【Python】异常处理及程序调试
1.异常的基本概念
在运行过程中,经常会遇到各种各样的错误,这些错误统称为“异常”。其中,一部分“异常”是由开发者直接输入导致,这类错误多数产生的是SyntaxError:invalid syntax(无效的语法),这将直接导致程序无法运行。
常见例子如下:
会弹出语法错误提示
输出TypeError,说明str类型和int类型不能串联。
常见的异常类型
异常 | 描述 |
NameError | 试图访问的变量名不存在 |
IndexError | 索引超出序列范围引发的错误 |
Exception | 常规错误的基类 |
SyntaxError | Python语法错误 |
SystemError | 一般的解释器系统错误 |
Warning | 警告的基类 |
SyntaxWarning | 可疑的语法警告 |
UserWarning | 用户代码生成的警告 |
2.异常处理语句
①try…except语句
在Python中,提供了try…except语句捕获并且处理异常,语法格式如下:
try:block1
except[ExceptionName[as alias]]:block2
参数说明如下:
block1:表示可能出现错误的代码块。
ExceptionName[as alias]:可选参数,用于指定要捕获的异常
block2:表示进行异常处理的代码块。这里可以输出固定的信息提示,也可以通过别名输出异常的具体内容。
Python语言使用保留字try和except进行异常处理。语法如下:
try:<语句块1>
except:<语句块2>
如果在except后面指明错误类型的基本语法格式:
try:<语句块1>
except<异常处理类型>:<语句块2>
②try…except…else语句
工作原理是在上一个语句后面加上else子语句。
示例:
a=10
b=0
try:c=b/aprint('c')
except (IOError,ZeroDivisionError),x:print x
else:print("no error")
print("done")
运行结果:
c
noerror
done
③try…except…finally语句
语法格式:
try:block1
except [ExceptionName[as alias]]:block2
finally:block3
示例:
④使用raise语句抛出异常
#!/user/bin/env python3raise Exception("错误信息")
3.使用IDLE和assert语句进行程序调试
(1)使用Python自带的IDLE进行程序调试
①打开IDLE Shell,并在其中单击菜单栏Debug中的Debugger,如图:
之后,会弹出DebugControl的对话框(此时对话框是空白的,如图所示):
②从IDLE Shell中打开想要调试的.py的文件,选中某行,右键设置断点。
③添加断点之后,单击菜单栏Run中的RunModule,运行.py文件
④DebugControl对话框中将显示程序的执行信息。
(2)使用assert语句进行程序调试
语法格式如下:
assert 条件表达式 [,描述信息]
assert语句的作用是:当条件表达式的值为真时,该语句什么也不做,程序正常运行,反之,若值为假,则assert会抛出AssertionError异常。其中,[,描述信息]作为可选参数,用于对条件表达式可能产生的异常进行描述。
通常情况下,assert语句可以和try…except异常处理语句配合使用。