Day11.5 异常处理2019-10-24

文件和异常2.0 day 11.5


学习计划:

  1. day11中剩下的文件异常
  2. day4未做的事(这个不急,可留在后面)
  3. PEP8的续行标准
  4. 之前的案例day7和day9
  5. 简明教程进行补充

学习内容:

  1. 为什么要处理异常?
    • 首先明白:异常不是错误,我们没有必要去警惕他,害怕他,他只是出乎我们意料之外的事
    • 异常的处理可以使得程序员真实的工作和异常的处理分离,使得程序代码更加简洁流畅,逻辑更加清晰。即不会因为可能出现的错误,为此设立一大堆if语句,并且每个错误都要思考处理的方法。有了异常处理之后,我们只需要将异常抛出,然后控制器捕获,进行处理。
      我认为,异常处理——
      • 对于程序员就是把所有的问题做个标记(有点类似超链接),继续书写原本的工作;
      • 对于计算机来说,就是,前面抛出异常,后台捕获异常分析异常类型然后处理,再反馈回前面;
      • 对于用户来说,如果没有异常处理,一旦遇到问题就是程序终止,会获得非常不好的体验,但是使用异常处理,使得用户获得异常的内容然后进行下一步操作。

举个例子:(该例子来自为什么使用异常处理机制)

  • 从用户角度,当我们在淘宝上买东西时,如果没有登录就点击购买,那么会跳出页面显示请登录,然后我们就点击转到登录页面。如果没有异常处理呢?这时页面可能会出现一大堆代码,表示系统崩溃啦,是不是很不开心,尤其在双十一的时候,恨不得摔了手机。
  • 从程序员角度出发,程序员先生要设计一个用户购买物品的程序,重点在于购买的流程,而不是在购买时出现的一大堆异常,比如说没有登陆,用户是黑名单用户,密码出错等等,好像需要写一大堆if语句进行判断,那程序员先生后面的购买结算之类的不写了吗?这时,采用异常处理,抛出异常,待程序员先生写完整个流程后,调试好整个流程后。再编写编写一段代码告诉编辑器如何处理这些异常。
    (感觉我好像在给异常处理打广告,但其实我也只是知晓了皮毛,具体如何处理,什么时候处理,还要真正接触到案列或者项目才能深刻体会,这里只是提供一个抽象的理解)
  1. 异常处理的方法(详细可见总结:Python中的异常处理):

    1. try-except-finally
    2. 用于文件的with
    3. raise:一方面,捕获异常后再抛出时,raise后面不加关键词 ;另一方面,自主抛出异常时,raise Error_type(异常类型) (Error_value(异常内容))
    raise NameError ('该名字已使用!')
    
    1. getattr()用于属性不确定,没有赋值时使用

对python的话:

未做的事:

  1. 异常处理之后的事情,即抛出异常后,怎么捕获资源然后写后续操作

你可能感兴趣的:(Day11.5 异常处理2019-10-24)