zoukankan      html  css  js  c++  java
  • Python 代码的异常处理和打印异常信息

    前言

    • Python的异常处理可以向用户准确反馈出错信息,所有异常都是基类Exception的子类。
      自定义异常都是从基类Exception中继承,Python自动将所有内建的异常放到内建命名空间中
      所以程序不必导入exceptions模块即可使用异常。
    • 需要查看详细的错误信息需导入import traceback模块

    捕获异常的方式

    方法一:捕获所有的异常

    try:
       1/0
    except Exception:
        print (Exception)
    """输出异常类<class 'Exception'>"""
    

    方法二:采用traceback模块查看异常,需要导入traceback模块,这个方法会打印出异常代码的行号

    try:
        1/0
    except:
        traceback.print_exc()
    """输出:
    Traceback (most recent call last):
      File "C:/Users/Administrator/Desktop/demo04.py", line 123, in <module>
        1/0
    ZeroDivisionError: division by zero
    """
    

    方法三:采用sys模块回溯最后的异常

    try:
        1/0
    except:
        info = sys.exc_info()
        print(info)
        print(info[0])
        print(info[1])
    
    """输出
    (<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), <traceback object at 0x000001D3E9FF62C8>)
    <class 'ZeroDivisionError'>
    division by zero
    """
    

    获取函数名和行号

    上面介绍的方法二回打印出问题代码的行号,还有一些方法可以获取函数名和行号

    import sys
    
    
    def get_cur_info():
        """Return the frame object for the caller's stack frame."""
        try:
            raise Exception
        except:
            f = sys.exc_info()[2].tb_frame.f_back
        return (f.f_code.co_name, f.f_lineno)
    
    
    def callfunc():
        print(get_cur_info())
    
    
    if __name__ == '__main__':
        callfunc()
    
    """输出:
    ('callfunc', 131)
    """
    
    import sys
    def get_cur_info():
        # 获取当前函数名
        print(sys._getframe().f_code.co_name)
        # 获取调用函数名(A调用B函数,获取A的函数名)
        print(sys._getframe().f_back.f_code.co_name)
    get_cur_info()
    
    """输出:
    get_cur_info
    <module>
    """
    
  • 相关阅读:
    C#随笔
    C# 程序间通信的各种途径及解析
    C#控件根据窗体改变大小
    c# SqlHelper Class
    初始Java
    函数基础
    基本数据类型的高级特性:
    python基础
    C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
    Oracle使用dblink导入数据
  • 原文地址:https://www.cnblogs.com/se7enjean/p/12720197.html
Copyright © 2011-2022 走看看