如何用Python的Try Except捕获通用内置异常且保留错误信息?
如何在Python中捕获通用异常并保留错误信息
Python里所有内置的业务相关异常(比如TypeError、ZeroDivisionError这类)都继承自Exception类,所以用Exception作为捕获类型就能实现你要的通用捕获效果,同时通过绑定异常实例可以保留完整的错误信息。
直接上符合你需求的代码示例:
try: # 替换成你的业务代码 num = int("not_a_number") result = 10 / num except Exception as e: # 这里实现给用户发送错误的逻辑,同时保留错误详情 error_info = f"错误类型:{type(e).__name__},错误描述:{str(e)}" print(error_info) # 实际场景可以换成返回给用户的消息、写入日志等操作
关键说明:
except Exception as e:这里的e是捕获到的异常对象,通过它能拿到错误的所有细节type(e).__name__:获取具体的异常类型名称(比如TypeError、ZeroDivisionError)str(e):获取异常自带的描述信息(比如invalid literal for int() with base 10: 'not_a_number')
注意事项:
这种方式不会捕获系统级的退出异常(比如KeyboardInterrupt、SystemExit),这些属于BaseException的子类,一般不需要捕获,除非你有特殊的处理需求。另外,尽量不要在代码中大范围滥用通用捕获,能捕获具体异常的时候优先写具体类型,通用捕获适合在顶层做统一错误处理的场景。
内容的提问来源于stack exchange,提问作者colinwink
相关产品推荐
相关产品推荐

