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

浙公网安备 33010602011771号