zoukankan      html  css  js  c++  java
  • Python错误处理和调试

    错误处理(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: division by zero
    # finally...
    # END
    
    # 可以使用多个except来捕捉不同的错误信息,finally不管是否报错都一定会执行

    调试

    • print()
    def foo(s):
        n = int(s)
        print('>>> n = %d' % n)
        return 10 / n
    # 用print()最大的坏处是将来还得删掉它
    • 断言(assert)(凡是用print()来辅助查看的地方,都可以用断言(assert)来替代)
    def foo(s):
        n = int(s)
        assert n != 0, 'n is zero!'
        return 10 / n
    #assert的意思是,表达式n != 0应该是True。否则抛出AssertionError:‘n is zero’
    • logging(logging不会抛出错误,而且可以输出到文件)
    import logging
    logging.basicConfig(level=logging.INFO)
    
    s = '0'
    n = int(s)
    logging.info('n = %d' % n)
    print(10 / n)
    • pdb(启动Python的调试器pdb)
    $ python -m pdb err.py
    输入命令l来查看代码
    输入命令n可以单步执行代码
    任何时候都可以输入命令p 变量名来查看变量
    输入命令q结束调试,退出程序
    • pdb.set_trace()(可能出错的地方放一个pdb.set_trace(),就可以设置一个断点)
    import pdb
    
    s = '0'
    n = int(s)
    pdb.set_trace() # 运行到这里会自动暂停
    print(10 / n)
    # 程序会自动在pdb.set_trace()暂停并进入pdb调试环境,可以用命令p查看变量,或者用命令c继续运行
  • 相关阅读:
    配置PyCharm(背景色+字体大小+解释器选择)
    面向对象的三大特性(封装、继承、多态)
    hashlib模块
    logging模块
    Mac OSX系统、Linux、Windows命令行教程
    Python2和Python3的一些语法区别
    python——内置函数和lambda匿名函数
    python——异常处理
    SVN
    实体框架Entity Framework 4.1快速入门
  • 原文地址:https://www.cnblogs.com/sghy/p/8258051.html
Copyright © 2011-2022 走看看