• python 异常处理


    要点概论:

    1. 了解错误类型

    2. 掌握python异常处理

    3. 掌握pycharm调试功能

    1.错误类型

      编译过程中一般会遇到语法错误,运行时错误和逻辑错误。

      1)语法错误:语法是指语句的形式必须符合python语言的要求。在编辑代码时,python会对输入的代码进行语法检查,不但会给出错误提示,而且标出错误位置。

      2)运行时错误:有些代码在编写时没有错误,但在运行过程中会发生异常,这类错误称为“运行时错误”,例如执行除数为零的除法运算,打开不存在的文件,列表索引越界等。

      

      3)逻辑错误:又称为语义错误,表现形式是程序运行时不报错,但结果不正确,这往往是由于程序存在逻辑上的缺陷。

         例如:运算符使用的不合理,语句的次序不对,循环语句的起始终值不正确等,都是逻辑错误的表现形式。对于逻辑错误,python解释器无能为力,只能由程序员自行发现和解决。

    2. 异常处理

      异常(exception)是因程序的例外,违例,出错等情况而在正常控制流之外采取的行为。异常一般分为如下两个阶段:

      1)第一个阶段是引起异常发生的错误。当一个错误发生了,异常被打印出来,称为未处理异常,这时因为没有代码来明确地关注和处理异常,异常被缺省处理,自动输出一些调试信息并终止运行。

      2)第二个阶段是检测并处理异常,如果通过代码去明确地处理异常,则程序不会终止运行,并能增大容错性。python 提供 try ... except语句处理异常,通过 raise 语句引发异常。

        python的 try 语句有两种风格,一种是处理异常(try ... except),另一种是无论是否发生异常都将执行最后的代码(try ... finally)。

        ① try ... except 语句

          提供了异常处理机制,保护可能导致运行时错误的某些代码行。格式如下:

          

    try:
    
        try#被监控的语句
    
    except Exception[, reason]:
        except#处理异常的语句

          try 字句中的代码块防止可能出现异常的语句,except 字句中的代码块处理异常.

        

        ② try ... finally 语句

          无论是否发生异常,都要确保资源释放代码的执行。

          一般来说,如果没有发生错误,执行过 try 语句块之后执行 finally 语句块,完成整个流程。

          如果 try 语句块发生了异常,抛出了这个异常,会执行 except 语句块,然后运行 finally 语句块进行资源释放处理。格式如下:

      

    try:
        
        try#被监控的语句
     
    except Exception[,reason]:
        
        except#处理异常的语句
    
    finally:
    
        finally块

    except语句用法:

    分句形式                  说明
    except Exception 捕获所有异常类型
    except name 只捕获指定类型异常
    except name,value 捕获所列异常,并获得抛出的异常对象
    except (name1,name2) 捕获任何列出类型的异常
    except(name1,name2),value 捕获任何列出类型的异常,并获得抛出的异常对象
    else 如果没有异常发生,则运行
    finally 不管有没有异常,都运行此代码块

      

    3 .pycharm 调试功能(待补充

    4 . 调试策略

      调试过程的关键不是调试技术,而是用来推断错误原因的基本策略。调试的关键在于推断程序内部的错误位置及原因。

      

      1)试探法:凭经验猜测,基于错误出现的所有相关数据,假想一个错误原因,用这些数据证明或反驳它;或者一次列出所有可能的原因,通过测试测试一一排除。

        只要某次测试结果说明某种假设已初现端倪,则立即精华数据,进一步进行深入的测试。

      2)回溯法:由错误症状最先出现的地方,沿控制流向回检查,直到找到错误根源或确定错误产生的范围。

        这种方法适用于小型程序。例如,程序中发现错误处是某个打印语句。通过输出值可判断程序在这一点上变量的值,再从这一点出现,回溯程序的执行过程,

        反复考虑:“如果程序在这一点上的状态(变量的值)是这样,那么程序在上一点的状态一定是这样......”,直到找到错误的位置。

      3)对分法:根据关键点插入的位置将程序分成两个部分,分别进行调试。

      4)归纳法:归纳法是一种从特殊推断一般的系统化思考方法。归纳发调试的基本思想是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误。

      5)强行排错:这种调试方法不需要过多的思考,目前使用较多,但效率较低。

        ① 在程序特定部位设置打印语句,把打印语句插在出错的源程序的各个关键变量改变部位,重要分支部位,子程序调用部位,跟踪程序的执行,监视重要变量的变化。

        ② 自动调试工具。利用某些程序语言的调试功能或专门的交互式调试工具,分析程序的动态过程,而不必修改程序。

    附录:

      高级程序设计语言的 IDE(https://zhidao.baidu.com/question/1767421579537008180.html) 编程环境一般有3种调试工具,分别是单步运行,设置断点和监视变量。  

      将这3种i调试工具有机地组合使用,可以帮助读者分析思考程序,找到语义错误。

      1)单步运行:又名逐语句运行,使得程序一行一行地执行, pycharm IDE 用粉红色光带表示程序当前的运行位置。

      2)设置断点:程序运行到断点处就停止了,不能再往下执行。断点是挂起程序执行的一个标记,程序执行到断点处会自动暂停,不再往下执行。可以通过单步运行和监视变量分析代码进行调试。

      3)查看器:添加查看器用于监视变量,通过逐语句的单步执行,观察变量是如何一步一步的改变。

  • 相关阅读:
    深度学习一:安装MXnet包,实现MNIST手写数体识别
    深度学习二:Neural art:用机器模仿梵高
    【Stanford CNN课程笔记】1. Image Classification and Nearest Neighbor Classifier
    PHP之图形处理
    Ubuntu14.10+cuda7.0+caffe配置
    CentOS系统上编译、安装、配置OpenCV
    安装MXnet包,实现MNIST手写数体识别
    Neural art:用机器模仿梵高
    String to Integer (atoi)
    Wildcard Matching
  • 原文地址:https://www.cnblogs.com/HZY258/p/8451847.html
Copyright © 2020-2023  润新知