Python如何将捕获的Exception拆分为异常类型与错误消息
实现方案
直接通过Python异常实例的内置属性即可完成拆分,split_err函数完整实现如下:
def split_err(err): # 取异常类型名称,若需要异常类对象可直接返回 err.__class__ err_type = err.__class__.__name__ # 转字符串取异常消息,兼容所有内置/自定义异常的可读输出 err_msg = str(err) return err_type, err_msg
注意事项
- 如果你的
log_crash需要接收异常类对象而非类型名称字符串,把err_type赋值改为err_type = err.__class__即可。 - 不推荐直接取
err.args[0]作为错误消息:部分异常会携带多个参数,无参异常的args是空元组,直接取下标会触发新的报错,用str(err)做转换兼容性最好。
调用示例
基础功能测试
err = Exception("this is an exception") err_type, message = split_err(err) print(err_type) # 输出:Exception print(message) # 输出:this is an exception
适配检查模式的try/except块写法
try: # 业务逻辑代码 1 / 0 except Exception as Err: err_type, err_msg = split_err(Err) # 传入已封装的日志函数,不抛出异常 log_crash(err_type, err_msg)
内容的提问来源于stack exchange,提问作者Pioneer_11
相关产品推荐
相关产品推荐

