发布时间:2023-05-18 18:30
无论是什么编程语言写的程序,在运行时,都会出现各种异常,我们作为写代码的人,要对它们什么时候会抛出怎样的异常心中有数,要不然一旦出现错误,就成这样了:
如果你在你的电脑上没有见过下面这张图:
那么恭喜你,说明你还很年轻,连XP系统都没用过的人真的是少年啊。
不过,我们今天要说的是Python中的异常,它通常长这个样子:
重点来了
为了让大家能够避开各种枯燥理论,本文不会搞很复杂的什么分类啊,继承啊之类的。我们直接简单粗暴地解决我们工作中的问题:
问题1:什么时候会遇到错误和异常?
一句话:当Python遇到自己不能处理的问题时,就会抛出异常。什么是自己不能处理的问题?你让一个数除以0,你让它去读取一个不存在的文件,你明明断网了非得要让它去爬取某网站的数据。
问题2:怎么处理错误和异常?
一句话:别管它(不要打我,话还没说完呢),或者捕获它。
三种情况:
如果是一个不与用户交互的程序,你不管它也没啥问题,出错了去看错误信息,修复就好了如果你写的程序是一个对稳定性和性能要求很高的程序,那更是要对错误和异常小心处理好,不能随便就扔了不管如果是一个要与用户交互的程序,出错了你就不能不管我们说第三种情况:因为你如果给用户一个这样的页面:
我相信用户会立即离开你的软件系统,这真是太忧伤了,如果你把这个异常截住了,不要让让它显示给用户,而是采用下面的策略提示用户:
某个东西找不到了,请稍等系统有点故障,请稍后再试系统似乎有点问题,请联系某人是不是就好多了?今天来张图让你看看别人的系统出现异常后给用户的提示页面做得有多优雅:
现在,我在我自己的项目中,如果遇到一个文件不存在的异常时,我在视图中处理用户请求时这么做:
注意代码第86行,草莓1.jpg这个文件是不存在的,所以一定会走异常
再看我的HTML代码,也就是error.html的内容:
现在,我再请求cloud这个view,就会有下面这个页面:
我这个人写代码还行,审美不好,这么漂亮的页面不是我设计出来的,是我从网上找来的,向原作者致敬。本项目的代码已经在Github上开源了,大家在评论区沟通地址,正文区不能放网址。
问题3:我想要自己抛出一个错误和异常怎么做?
代码在此,照着抄:
顺便提一句,上面图的这个四则运算的代码,是我8岁的女儿写的,不是我写的。向她致敬。
最后,是时候了解一下Python3的异常执行流程了,上一张图,相信聪明的你就秒懂了:
运行我这段代码,就成了:
到这一步,恭喜你,你已经会对Python中的错误和异常理解并且掌握了,会用了。至于深层次的理论,有时间了看看书吧,看手机挺废眼睛的。
Mybatis源码详解系列(三)--从Mapper接口开始看Mybatis的执行逻辑
linux编译环境下,华为LiteOS初体验(STM32F407)
《100天一起学习PyTorch》第二天:从零实现线性回归(含详细代码)
#nginx学习(5)#nginx的七层负载均衡和四层负载均衡配置
web前端面试高频考点——Vue3.x深入理解(v-model参数用法、watch和watchEffect区别、Vue3快于Vue2、Vite启动快的原因)
cs224w(图机器学习)2021冬季课程学习笔记9 Graph Neural Networks 2: Design Space
通过 MSE 实现基于Apache APISIX的全链路灰度