python

当前位置:首页 > python基础教程 > 当前文章

python基础教程

什么是异常?异常和错误的区别?为什么用异常

2020-08-01 99赞 python中国网
每篇文章努力于解决一个问题!python高级、python面试全套、操作系统经典课等可移步文章底部。

  异常和错误

  写程序的时候可能会犯错,有些错是语法层面的,无法去执行,这就是错误。有些错误语法上符合规范,但由于自身逻辑失误或者其他原因造成运行时出现故障,这就是异常,异常又称为运行时错误。不管是错误还是异常(如果未处理)都会导致程序停止运行。

  错误举例:你定义变量用数字开头;你用echo来输出变量而不是print,这些在python中这是不允许的。

  异常举例:一个列表lis有2个元素,你却写lis[2]让他输出第3个元素;一个字典只有key1你却写dict['key2']让他输出。

  为什么学习异常处理

  假设要读取10000个文件的数据,第1个文件名写错了但其他9999个文件都是ok的,可偏偏因为第1个文件读取错误就导致程序挂掉,本来能成功读取9999个的机会也被扔掉了。这个事情就很不划算。如果10000个文件你不知道哪个文件名不对呢?岂不是每一个都要判断一下文件是否存在,这也会增加代码量。

  所以,此情此景就得用异常这种机制来处理了。

  初步感受下语法

  一个简单的案例感受下效果,具体的语法后面会介绍。情景:用10除以列表里每一个元素得到一个新的列表。前提是原列表有个0。我们看下加异常和不加异常的效果。

# -*- coding: utf-8 -*-

lis = [1,0,2,3,4,5]
# 异常处理
for i in lis:
    try:
        print(10/i)
    except Exception as e:
        print(e,'除0是不行的')
    else:
        pass

print('-----------------')

for i in lis:
    print(10/i)


10.0
division by zero 除0是不行的
5.0
3.3333333333333335
2.5
2.0
-----------------
10.0
Traceback (most recent call last):
  File "D:/pyscript/py3script/python66/python66.py", line 17, in <module>
    print(10/i)
ZeroDivisionError: division by zero

  什么时候用异常处理

  作为新手可能会想为了让程序不挂掉我在每一句代码上都加上异常。这样是不合理的,过犹不及。异常检测也会消耗计算机的资源影响程序的效率。

  在程序中适合加异常的是那些你无法100%预知结果可能会错的地方。比如爬虫程序抓取一个网页可能会出现网络断了,此时请求网页的过程可以加个异常处理。

文章评论

什么是异常?异常和错误的区别?为什么用异常文章写得不错,值得赞赏