四、Python之异常处理

序言

我们的代码必然存在各种各样我们难以察觉的漏洞,为了加强程序的稳定性和鲁棒性,我们需要提前在代码中打好预防针,对各种可能出现的漏洞预先做好应对措施,这就是“异常处理”。

python中异常类型

AssertionError 断言失败
AttributeError 访问的对象属性不存在
IndexError 索引超出序列范围
KeyError 字典中查找的“键”不存在
NameError 访问的变量不存在
OSError 操作系统异常
SyntaxError python语法错误
TypeError 不同类型对象间操作无效
ZeroDivisionError 除数为0

try-except

  1. try...except结构一般模式
    try:
    检测范围
    except ErrorType [as reason]:
    出现 ErrorType 后的处理代码
try:
  file=open('my.tex')
except OSError as reason:
  print('文件打开错误!'+str(reason))
  1. 针对不同异常设置多个except
try:
  file=open('my.tex')
except OSError:
  print('文件打开错误!')
except TypeError as reason:
  print('文件打开错误!'+str(reason))
  1. 对多个异常统一处理
try:
  file=open('my.tex')
except (OSError,TypeError):
  print('文件打开错误!')
  1. 捕获所有异常
try:
  file=open('my.tex')
except:
  print('文件打开错误!')

try-except-finally

为了在出现异常后,防止一些必要的收尾命令被跳过,可以将一些必要的命令防在finally后。

try:
  file=open('my.tex')
except:
  print('文件打开错误!')
finally:
  file.close()

题外话——更灵活的else

  1. 要么怎样,要门怎样
    if 条件:
    语句
    else:
    语句
  2. 干完怎样,干不完就别想
    while 条件:
    语句
    else:
    语句
    只有while正常跳出时才会执行else中语句,使用break跳出while则不会执行else中语句。
  3. 没有问题就干吧
    try:
    语句
    except:
    语句
    else:
    语句
    没有出现任何异常类型则会执行else后语句。
posted @ 2021-08-22 19:34  王若虚  阅读(74)  评论(0)    收藏  举报