python异常捕获和处理_Python基础教程——异常和错误捕获与处理

无论是什么编程语言写的程序,在运行时,都会出现各种异常,我们作为写代码的人,要对它们什么时候会抛出怎样的异常心中有数,要不然一旦出现错误,就成这样了:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第1张图片面对不知名的异常,只能是尴尬了

如果你在你的电脑上没有见过下面这张图:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第2张图片该内存不能为read

那么恭喜你,说明你还很年轻,连XP系统都没用过的人真的是少年啊。

不过,我们今天要说的是Python中的异常,它通常长这个样子:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第3张图片Python中的异常

重点来了

为了让大家能够避开各种枯燥理论,本文不会搞很复杂的什么分类啊,继承啊之类的。我们直接简单粗暴地解决我们工作中的问题:

问题1:什么时候会遇到错误和异常?

一句话:当Python遇到自己不能处理的问题时,就会抛出异常。什么是自己不能处理的问题?你让一个数除以0,你让它去读取一个不存在的文件,你明明断网了非得要让它去爬取某网站的数据。

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第4张图片Python处理不了,就扔给你,自己看着办

问题2:怎么处理错误和异常?

一句话:别管它(不要打我,话还没说完呢),或者捕获它。

三种情况:

如果是一个不与用户交互的程序,你不管它也没啥问题,出错了去看错误信息,修复就好了如果你写的程序是一个对稳定性和性能要求很高的程序,那更是要对错误和异常小心处理好,不能随便就扔了不管如果是一个要与用户交互的程序,出错了你就不能不管我们说第三种情况:因为你如果给用户一个这样的页面:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第5张图片不能把这种东西给用户

我相信用户会立即离开你的软件系统,这真是太忧伤了,如果你把这个异常截住了,不要让让它显示给用户,而是采用下面的策略提示用户:

某个东西找不到了,请稍等系统有点故障,请稍后再试系统似乎有点问题,请联系某人是不是就好多了?今天来张图让你看看别人的系统出现异常后给用户的提示页面做得有多优雅:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第6张图片真的是很萌了

现在,我在我自己的项目中,如果遇到一个文件不存在的异常时,我在视图中处理用户请求时这么做:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第7张图片捕获异常,然后给出错误提示

注意代码第86行,草莓1.jpg这个文件是不存在的,所以一定会走异常

再看我的HTML代码,也就是error.html的内容:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第8张图片错误页面模板

现在,我再请求cloud这个view,就会有下面这个页面:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第9张图片怎么样?还不错吧?

我这个人写代码还行,审美不好,这么漂亮的页面不是我设计出来的,是我从网上找来的,向原作者致敬。本项目的代码已经在Github上开源了,大家在评论区沟通地址,正文区不能放网址。

问题3:我想要自己抛出一个错误和异常怎么做?

代码在此,照着抄:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第10张图片python3手动抛出异常

顺便提一句,上面图的这个四则运算的代码,是我8岁的女儿写的,不是我写的。向她致敬。

最后,是时候了解一下Python3的异常执行流程了,上一张图,相信聪明的你就秒懂了:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第11张图片Python3的异常执行流程

运行我这段代码,就成了:

python异常捕获和处理_Python基础教程——异常和错误捕获与处理_第12张图片秒懂Python3的异常处理流程

到这一步,恭喜你,你已经会对Python中的错误和异常理解并且掌握了,会用了。至于深层次的理论,有时间了看看书吧,看手机挺废眼睛的。

你可能感兴趣的