08 | 异常处理:如何提高程序的稳定性?(上)

2021/6/19 1:27:04

本文主要是介绍08 | 异常处理:如何提高程序的稳定性?(上),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

你好,我是悦创。

今天这节课,我想和你聊聊 Python 的异常处理。和其他语言一样,异常处理是 Python 中一种很常见,并且很重要的机制与代码规范。

我在实际工作中,见过很多次这样的情况:一位工程师提交了代码,不过代码某处忘记了异常处理。碰巧这种异常发生的频率不低,所以在代码 push 到线上后没多久,就会收到紧急通知——服务器崩溃了。

如果事情严重,对用户的影响也很大,这位工程师还得去专门的会议上做自我检讨,可以说是很惨了。这类事件层出不穷,也告诉我们,正确理解和处理程序中的异常尤为关键。

 

错误与异常

首先要了解,Python 中的错误和异常是什么?两者之间又有什么联系和区别呢?

通常来说,程序中的错误至少包括两种,一种是语法错误,另一种则是异常。

所谓语法错误,你应该很清楚,也就是你写的代码不符合编程规范,无法被识别与执行,比如下面这个例子:

  •  
if name is not None    print(name)

If 语句漏掉了冒号,不符合 Python 的语法规范,所以程序就会报错invalid syntax。

而异常则是指程序的语法正确,也可以被执行,但在执行过程中遇到了错误,抛出了异常,比如下面的 3 个例子:

  •  
10 / 0Traceback (most recent call last):  File "<stdin>", line 1, in <module>ZeroDivisionError: integer division or modulo by zero
order * 2Traceback (most recent call last):  File "<stdin>", line 1, in <module>NameError: name 'order' is not defined
+ [1, 2]Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: unsupported operand type(s) for +: 'int' and 'list'

它们语法完全正确,但显然,我们不能做除法时让分母为 0;也不能使用未定义的变量做运算;而让一个整型和一个列表相加也是不可取的。

于是,当程序运行到这些地方时,就抛出了异常,并且终止运行。例子中的ZeroDivisionError NameError和TypeError,就是三种常见的异常类型。

当然,Python 中还有很多其他异常类型,比如KeyError是指字典中的键找不到;FileNotFoundError是指发送了读取文件的请求,但相应的文件不存在等等,我在此不一一赘述,你可以自行参考相应文档。



这篇关于08 | 异常处理:如何提高程序的稳定性?(上)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程