python捕获异常时,打印异常的类型、报错文件、与报错所在的行

捕获异常

异常的完整代码是:

try:
    raise Exception("wa")
except:
    print("报错")
else:
    print("没有报错")
finally:
    print("程序关闭")

得到结果:

报错
程序关闭

一般程序里的 tryexcept是一对,如果没有报错,会执行到else,不论是否有报错,都会执行finally

当异常发生时,会将异常的信息保存到sys.exc_info()这个方法中

官方sys.exc_info()教程:https://docs.python.org/3/library/sys.html#sys.exc_info

使用sys.exc_info()可以得到:

  • 报错类型(返回值位置1)
  • 报错信息(返回值位置2)
  • 报错信息回溯(返回值位置3)

基于报错信息可以额外得到:

  • 报错的行数
  • 报错的文件信息

详情请见【示例代码】

示例代码

import sys
import os

try:
    raise RuntimeError('这里有个报错')
except Exception as e:
    except_type, except_value, except_traceback = sys.exc_info()
    except_file = os.path.split(except_traceback.tb_frame.f_code.co_filename)[1]
    exc_dict = {
        "报错类型": except_type,
        "报错信息": except_value,
        "报错文件": except_file,
        "报错行数": except_traceback.tb_lineno,
    }
    print(exc_dict)

得到结果:

{
	'报错类型': , 
	'报错信息': RuntimeError('这里有个报错'), 
	'报错文件': 'check_except.py', 
	'报错行数': 9
}

如果是完整的流程:

try:
    print('正常的程序')
except:
    print("报错")
else:
    print("没有报错")
finally:
    print("程序关闭")

得到结果:

正常的程序
没有报错
程序关闭

你可能感兴趣的:(python,运维,python,开发语言)