try catch 定位error并打印

以下程序可以将原始错误直接打印出来嘛:def func(): try: 1 / 0 except Exception as exc: # raise RuntimeError("计算失败") from exc print(exc) raise def main(): try: func() except Exception as exc: return {f"错误:{exc}"} if name == "main": info = main() print(info)

可以。你这段程序里 print(exc) 会直接打印原始异常对象的字符串内容,也就是:

division by zero

然后你又写了:

raise

这会把原始异常 重新抛出,所以外层 main() 会捕获到同一个异常:

except Exception as exc:
    return {f"错误:{exc}"}

因此最终输出大致是:

division by zero
{'错误:division by zero'}

注意这里:

return {f"错误:{exc}"}

返回的是一个 set 集合,不是字符串,也不是字典。所以打印出来会带 {}

如果你想返回字符串,应该写:

return f"错误:{exc}"

完整版本:

def func():
    try:
        1 / 0
    except Exception as exc:
        print(exc)
        raise

def main():
    try:
        func()
    except Exception as exc:
        return f"错误:{exc}"

if __name__ == "__main__":
    info = main()
    print(info)

输出:

division by zero
错误:division by zero

如果你想打印完整原始 traceback,可以用:

import traceback

def func():
    try:
        1 / 0
    except Exception:
        traceback.print_exc()
        raise
posted @ 2026-05-21 12:38  X1OO  阅读(8)  评论(0)    收藏  举报