• Python异常处理机制、调试、测试


    类似于Java的try..catch..finally

    Java的为try_except_finally

    try:
        print('try...')
        r = 10 / 0
        print('result:', r)
    except ZeroDivisionError as e:
        print('except:', e)
    finally:
        print('finally...')
    print('END')

    try执行一段可能会发送异常的代码,如果有异常情况发送 走except , 如果没有则不走,最后不管代码有没有发送异常,都会执行finally里的代码

    异常错误存在父子类问题,如果父类处理了,子类则不会再接收处理

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------

    调试

    1、打印print

    最简单的就是print 把数据打印出来再去找错误原因

    问题在于会在代码中出现很多打印语句

    2、断言assert

     assert n != 0, 'n is zero!'

    assert的意思是,表达式n != 0应该是True,否则,根据程序运行的逻辑,后面的代码肯定会出错。

    如果断言失败,assert语句本身就会抛出AssertionError

    $ python err.py
    Traceback (most recent call last):
      ...
    AssertionError: n is zero!

    注:

    程序中如果到处充斥着assert,和print()相比也好不到哪去。不过,启动Python解释器时可以用-O参数来关闭assert

    关闭后,你可以把所有的assert语句当成pass来看。

    $ python -O err.py
    Traceback (most recent call last):
      ...
    ZeroDivisionError: division by zero

    3、logging

    logging的好处,它允许你指定记录信息的级别,有debuginfowarningerror等几个级别,当我们指定level=INFO时,logging.debug就不起作用了。同理,指定level=WARNING后,debuginfo就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。

    logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件。

    import logging
    logging.basicConfig(level=logging.INFO)
    
    s = '0'
    n = int(s)
    logging.info('n = %d' % n)
    print(10 / n)
    
    -------------------------------------------- $ python err.py INFO:root:n
    = 0 Traceback (most recent call last): File "err.py", line 8, in <module> print(10 / n) ZeroDivisionError: division by zero
  • 相关阅读:
    runtime关联属性示例
    Loader之二:CursorLoader基本实例
    Loader之一:基本原理
    Fragment之三:根据屏幕尺寸加载不同的Fragment
    Fragment之一:Fragment入门
    Github android客户端源代码分析之一:环境搭建
    如何在Eclipse中查看Android API源码以及support包源码
    Intent七在属性之一:ComponentName
    Intent七大属性之总结
    使用SQLiteHelper创建数据库并插入数据
  • 原文地址:https://www.cnblogs.com/xqxacm/p/9828889.html
Copyright © 2020-2023  润新知