python - 如何打印出异常来自的行
问题描述
def println(text: str):
try:
print(text)
if not type(text) == str:
raise TypeError(f"argument \"text\" should be type \"str\". not type \"{type(text)}\"".)
except TypeError as err:
print(err)
这工作正常,它说:
argument "text" should be type "str". not type "<class 'int'>".
但我看不到它来自哪条线路。它来自第 4 行,并没有说明错误来自哪一行。这使得调试错误变得困难和令人沮丧。
解决方案
import traceback
traceback.print_exc()
将使用解释器用于未捕获异常的相同默认回溯格式。
或者,更好的是,根本不捕获异常并让它在其他地方处理?如果您确实需要包装异常以更改其类型或消息,您可以这样做
except SomeException as exc:
raise RuntimeError("a thing broke") from exc
这将保留原始异常和回溯。
推荐阅读
- java - 使用同一对象调用休眠的多次 save() 方法是否会在数据库中插入新记录?
- ruby - 在 sidekiq 中删除定期作业
- python - 无法转换该列的数据时间(对象到时间)
- jhipster - JHipster:通过网关路由时,Rest 服务调用返回“401 Unauthorized”
- javascript - mongoose find() 在 js 中对产品数据库返回的结果进行排序和组织
- javascript - 剑道网格内联编辑剑道时间选择器不改变值
- node.js - 用于将数据插入到 mongoDB 中的对象数组的 API
- angular - Typescript,Angular Class Constructor参数太多
- python - Postgres 错误无法将主机名“postgres”转换为地址:名称或服务未知
- python - 在 python 中使用用户定义的密钥进行 RSA 加密