python中的异常处理(try,except)
简介
异常处理
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
语法:
以下为简单的try…except…else的语法:
代码演示
了解异常
# 异常演示 f = open("lihua.txt", 'r')
演示效果
异常的捕获方式
- 基本语法演示
try: 可能发生错误的代码 except: 如果出现异常执行的代码
代码演示
try: f = open('lihua.txt', 'r') except: f = open('lihua.txt', 'w')
运行结果
可以看出来当发生错误的时候,运行了except中的内容,然后创建了一个新的txt。
- 捕获指定异常
演示代码
try: print(name) except NameError as e: print('name变量名称未定义错误')
注意事项
① 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
② 一般try下方只放一行尝试执行的代码。
- 捕获多个异常
演示代码
try: print(1/0) except (NameError, ZeroDivisionError): print('ZeroDivision错误...')
运行结果
在这个结果中,我们可以看出来,这个除以0的错误被捕获了。
- 捕获异常并输出描述信息
基本语法
try: print(num) except (NameError, ZeroDivisionError) as e: print(e)
运行结果
这里打印出来了,错误的信息,但是没有报错,错误信息就是num没有被定义。
- 捕获所有异常
基本语法
try: print(name) except Exception as e: print(e)
运行结果
Exception可以捕获所有的异常。1
- 异常else
else表示的是如果没有异常要执行的代码。
try: print(1) except Exception as e: print(e) else: print('我是else,是没有异常的时候执行的代码')
运行结果
可以看出来,else里面是运行没有异常的时候的结果。
- 异常的finally
finally表示的是无论是否异常都要执行的代码,例如关闭文件。
演示代码
try: f = open('test.txt', 'r') except Exception as e: f = open('test.txt', 'w') else: print('没有异常,真开心') finally: f.close()
运行结果
这里可以看出来,创建了一个新的文本文件,然后最后也把这个给关闭了。