Python异常处理|程序调试

时间:2024-11-19 07:35:56

1、异常处理语句

1.1、try...except...else
说明
(1)把可能产生的异常代码放在try语句块中,把处理结果放在except语句块中。
(2)这样,当try语句块中的代码出现错误时。就会执行except语句块中的代码。
(3)如果try语句块的代码没有错误,那么except语句块不会执行。

语法格式
try:
	可能产生异常的代码块...
except [ExceptionName [as e]]:
	处理异常的代码块...(可以输出固定提示信息。也可以通过别名输出异常的具体内容)
else:
	指定当try没有异常时要执行的语句块...

参数说明
ExceptionName [as e]:可选参数。用于指定要捕获的异常。(不选择则表示捕获全部异常)
其中ExceptionName表示要捕获的异常名称。as e表示给当前的异常指定一个别名。通过该别名可以记录异常的具体内容。


1.2、try...except...else
说明
把可能产生的异常代码放在try语句块中。把处理结果放在except语句块中。
这样。当try语句块中的代码出现错误时。就会执行except语句块中的代码。
如果try语句块的代码没有错误。那么except语句块不会执行。


1.3、try...except...finally
说明
通常。无论程序中有无异常。finally代码块都必须要被执行。
如果分配了有限的资源(如打开文件)。则应该将释放这些资源的代码放置在finally代码块中。


1.4、raise语句抛出异常
说明
如果某个函数可能会产生异常。但不想子啊当前函数中处理这个异常。则可以使用raise语句在函数中抛出异常。

语法格式
raise [ExceptionName [(reason)]]

参数说明:
[ExceptionName [(reason)]]:可选参数。用于指定要抛出的异常以及异常信息的相关描述(不选择则表示把当前错误原样抛出)。
其中reason也可以省略。省略后表示在抛出异常时不附带任何描述信息。


1.5、pass语句忽略异常


1.6、assert语句调试程序
说明
(1)assert一般用于对程序某个时刻必须满足的条件进行验证。
(2)assert语句只在调试阶段有效。可以通过在执行python命令时加入-O(大写)参数来关闭assert语句。

案例如下:
E:
cd E:\program\python\Code
python -O division_apple_bug.py

语法格式
assert expression [。reason]

参数说明:
expression:条件表达式。为真则什么都不做;为假则抛出AssertionError异常。
reason:可选参数。用于对判断条件进行描述
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

2、Python常见异常

SyntaxError
语法错误。
案例
if action_str in ["1","2","3"]:
# print("您输入的不正确,请重新选择!")

执行上面代码,将出现如下报错:
SyntaxError: unexpected EOF while parsing

NameError
尝试访问一个没有声明的变量引起的错误。

IndexError
索引超出序列范围引起的错误。

ValueError
传入的值错误。

KeyError
请求一个不存在的字典关键字引发的错误。

AssertionError
验证错误。

IOError
输出/输入错误(例如:读取的文件不存在)。

ImportError
当import无法找到模块或from无法在模块中找到相应的名称时引发的错误。

AttributeError
尝试访问未知的对象属性引发的错误。

TypeError
类型不合适引发的错误。

MemoryError
内存不足引发的错误。

ZeroDivisionError
除数为0引发的错误。

IndentationError
缩进错误。
案例
for i in range(10):
if i%2 == 0:
#报错:
IndentationError: expected an indented block   //缺少一个块没写
#改正:
for i in range(10):
	if i%2 == 0:
		pass
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53