zoukankan      html  css  js  c++  java
  • python学习笔记十——异常处理

    1.try:

      command

       except 错误类型,记录错误信息变量:

      command

       finally:

      command

      try...finally的用处是无论是否发生异常都要确保资源释放代码的执行。一般来说,如果没有发生错误,执行过try语句块之后执行finally语句块,完成整个流程。如果try语句块发生了异常,抛出了这个异常,此时就马上进入finally语句块进行资源释放处理。如下从几个细节讨论finally的特性。

      1)、try中的return: 当在try语句块中含有return语句时,执行到return并不会直接返回,而是由Python忠实的再去执行finally语句块之后再执行return。(by gashero)从这里可以看出,只要程序没有突然终止,则finally中的资源释放语句一定会执行。无论发生什么异常都会执行到finally语句块中的代码。

      2)、finally之后呢? 实际测试看来,finally之后,try语句块中抛出的异常并没有被处理,而是直接被抛出到try...finally语句块之外了。并且是在finally语句块执行之后继续抛出这个异常的。 所以为了更好的处理这个异常,可以使用两层嵌套try语句块。内层的try语句块使用try...finally形式,确保资源释放代码的执行。外层try语句块使用try...except形式,可以很好的识别异常形式,并且分别处理。

      3)、如果希望直接finally掉呢? 有些时候在处理了finally中的资源释放之后就不再需要继续处理抛出的异常了,在这种情况下可以考虑在finally语句块中使用return语句。这样在资源释放之后直接返回,try语句块抛出的错误就不会继续向外抛出了。(by gashero)也就是节省了上面一条的外层try...except语句块了。当然,这样的后果是根本就不知道抛出过什么异常。

      最后谈一条except子句需要注意的事情,就是多个except子句截获异常时,如果各个异常类之间具有继承关系,则子类应该写在前面,否则父类将会直接截获子类异常。放在后面的子类异常也就不会执行到了

    2.raise 抛出异常

      raise 异常类型(异常信息)

  • 相关阅读:
    每日一模块:操作execl表格openpyxl
    python爬虫-通过api获取所在城市的天气
    机器学习(一):模型评估指标
    机器学习(二)-信息熵,条件熵,信息增益,信息增益比,基尼系数
    Anaconda安装及R环境配置
    VCF文件-VCFv4.2示例解释
    CPRIMER CHAP13
    R语言-ggplot原点设置
    c++11 多线程简介
    相关系数
  • 原文地址:https://www.cnblogs.com/wangyongbin/p/3702731.html
Copyright © 2011-2022 走看看