文件和异常2.0 day 11.5
学习计划:
- day11中剩下的文件异常
- day4未做的事(这个不急,可留在后面)
- PEP8的续行标准
- 之前的案例day7和day9
- 简明教程进行补充
学习内容:
- 为什么要处理异常?
- 首先明白:异常不是错误,我们没有必要去警惕他,害怕他,他只是出乎我们意料之外的事
- 异常的处理可以使得程序员真实的工作和异常的处理分离,使得程序代码更加简洁流畅,逻辑更加清晰。即不会因为可能出现的错误,为此设立一大堆if语句,并且每个错误都要思考处理的方法。有了异常处理之后,我们只需要将异常抛出,然后控制器捕获,进行处理。
我认为,异常处理——- 对于程序员就是把所有的问题做个标记(有点类似超链接),继续书写原本的工作;
- 对于计算机来说,就是,前面抛出异常,后台捕获异常分析异常类型然后处理,再反馈回前面;
- 对于用户来说,如果没有异常处理,一旦遇到问题就是程序终止,会获得非常不好的体验,但是使用异常处理,使得用户获得异常的内容然后进行下一步操作。
举个例子:(该例子来自为什么使用异常处理机制)
- 从用户角度,当我们在淘宝上买东西时,如果没有登录就点击购买,那么会跳出页面显示请登录,然后我们就点击转到登录页面。如果没有异常处理呢?这时页面可能会出现一大堆代码,表示系统崩溃啦,是不是很不开心,尤其在双十一的时候,恨不得摔了手机。
- 从程序员角度出发,程序员先生要设计一个用户购买物品的程序,重点在于购买的流程,而不是在购买时出现的一大堆异常,比如说没有登陆,用户是黑名单用户,密码出错等等,好像需要写一大堆if语句进行判断,那程序员先生后面的购买结算之类的不写了吗?这时,采用异常处理,抛出异常,待程序员先生写完整个流程后,调试好整个流程后。再编写编写一段代码告诉编辑器如何处理这些异常。
(感觉我好像在给异常处理打广告,但其实我也只是知晓了皮毛,具体如何处理,什么时候处理,还要真正接触到案列或者项目才能深刻体会,这里只是提供一个抽象的理解)
-
异常处理的方法(详细可见总结:Python中的异常处理):
try-except-finally
- 用于文件的
with
-
raise
:一方面,捕获异常后再抛出时,raise
后面不加关键词 ;另一方面,自主抛出异常时,raise
Error_type(异常类型)
(Error_value(异常内容)
)
raise NameError ('该名字已使用!')
-
getattr()
用于属性不确定,没有赋值时使用
对python的话:
未做的事:
- 异常处理之后的事情,即抛出异常后,怎么捕获资源然后写后续操作