如何减少Python';提高产量是什么例外?

如何减少Python';提高产量是什么例外?,python,python-3.8,Python,Python 3.8,我有一行Python代码: raise ValueError(f"Invalid input '{number}'") 当它引发异常时,我得到: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/snowcrash/Code/Python/mycode/mycode.py", line 8

我有一行Python代码:

raise ValueError(f"Invalid input '{number}'")
当它引发异常时,我得到:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/snowcrash/Code/Python/mycode/mycode.py", line 8, in __init__
    raise ValueError(f"Invalid input '{number}'")
ValueError: Invalid input 'a1b2c3'
如何实现这一点?

是在引发异常时执行打印的功能。您可以编写自己的函数(具有类似的签名),只需将其替换为:

sys.excepthook=myfunction

在这个函数中,你可以做任何你想做的事情。例如,您可以登录到文件,或打印有关异常发生时程序状态的一些信息。您甚至可以根据异常的类型安排不同的事情发生

然而,如果你只想格式化你的回溯信息,很多方便的东西已经为你提供了。您可以深入文档了解详细信息,但下面是一个示例,它大致生成了您想要的输出:

import sys, traceback


def myhook(type, value, tb):
    trace = traceback.format_tb(tb, limit=1)
    trace = trace[0].split("\n")[0]
    exc = traceback.format_exception_only(type, value)[0]
    print(trace + "\n" + exc)


sys.excepthook = myhook

number = "a1b2c3"
raise ValueError(f"Invalid input {number}")
其产生的输出为:

  File "scratch/so.py", line 14, in <module>
ValueError: Invalid input a1b2c3
文件“scratch/so.py”,第14行,在
ValueError:输入a1b2c3无效

特别注意使用
traceback.format_tb
limit=1
,以限制堆栈跟踪输出。模块中有很多这样的函数。

我想说的是,捕获异常并格式化您自己的错误消息。如果无法从该点恢复,请终止,否则请恢复并继续。脚本或程序的正确性决不能依赖于执行环境捕获异常的能力。回溯的目的是提供尽可能多的调试信息。您真的想提供调试信息,还是仅仅通知用户错误的输入?你的电话中断标准是什么?假设您的代码不直接调用raise,而是调用另一个最终调用raises的函数,您是否也要抑制代码,只显示一些实现细节的内部信息?
  File "scratch/so.py", line 14, in <module>
ValueError: Invalid input a1b2c3