Python第十章 调试

  1. 编码占了编程工作量的90%,调试占了另外90%
  2. 抛出异常使用raise语句,在代码汇总,raise语句包含以下部分
    raise关键字
    对Exception函数的调用
    传递给Exception函数的字符串,包含有用的出错信息。
  3. 如果乜有try和except语句覆盖抛出异常的raise语句,该程序就会崩溃,并显示异常的出错信息,
    通常调用该函数的改吗知道如何处理异常,额而不是该函数本身。所以在raise语句在一个函数中,try和except语句在调用该函数的代码中。
  4. 如果python遇到错误,它就会生成一些错误信息,称为“”反向跟踪“”。 反向跟踪包含了出错消息,导致该错误的代码行号,以及导致该错误的函数的调用的序列。这个序列称为调用栈。从报错信息的最后一行开始层层回调,看最终是哪里先调用的,然后报错。
    因为只要抛出的异常没有被处理,Python就会显示反向跟踪。
  5. 抛出异常,捕获异常,将异常写入日志文件,排查信息
    调用traceback_format_exec()函数,
    
    import os, traceback
    
    dir_path = os.getcwd() + '/'
    
    
    def spam():
        bacon()
    
    
    def bacon():
        try:
            raise Exception("this is the error mesage")
        except:
            errorFile = open(dir_path + 'error_info.txt', 'w')
            errorFile.write(traceback.format_exc())
            errorFile.close()
            print("The traceback info was written to error_info.txt")
    
    
    spam()
    
  6. 断言:由assert语句执行检查,看看是否做了明显错误的事情,如果检查失败,救护抛出异常。主要包括
    assert关键字
    条件
    逗号
    当条件为False的时候显示的字符串  四部分组成。
    程序不应该使用try except来处理assert语句,如果assert失败,程序就应该崩溃。
    在python 运行的时候传入-O 选项,可以禁用断言。

  7. 日志
    通过日志记录程序中发生的事情,以及事情发生的顺序。logging模块,

    文件开头添加:
    import logging
    logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s - %(levelname)s - %(message)s')
    
    禁止日志:
    
    logging.disable(logging.CRITICAL)

    日志级别:DEBUG是最低级别的,如果只看ERROR,可以只打印ERROR,忽略,debug,info,waring的日志。
    保存日志到文件:myProgramLog.txt文件,指定即可
     

    logging.basicConfig(filename='myProgramLog.txt', level=logging.DEBUG, format='
    %(asctime)s - %(levelname)
  8. 调试器和断点的使用,用来帮助调试代码,发现bug

  9. 小结
    断言、异常、日志和调试器,都是在程序中发现和预防缺陷的工具。
     

猜你喜欢

转载自blog.csdn.net/q1138266752/article/details/83869413