缩短异常的堆栈跟踪?

2024-09-30 16:33:58 发布

您现在位置:Python中文网/ 问答频道 /正文

当有人破坏我的库时,我会引发一个自定义异常,当前的情况如下:

Traceback (most recent call last):
  File "main.py", line 17, in <module>
    StateMachine()
  File "main.py", line 15, in __new__
    activate(self)
  File "/home/runner/va4un94x2qp/fsm.py", line 101, in activate
    state = enable(machine, state)
  File "/home/runner/va4un94x2qp/fsm.py", line 94, in enable
    raise MissingReturnError("State '{}' in machine '{}' missing a return statement, or it returns None..".format(StateFound.fallmsg, machine.__name__))
fsm.MissingReturnError: State '__main__' in machine 'StateMachine' missing a return statement, or it returns None.

但我希望它看起来像这样:

Traceback (most recent call last):
  File "main.py", line 17, in <module>
    StateMachine()
  File "main.py", line 15, in __new__
    activate(self)
MissingReturnError: State '__main__' in machine 'StateMachine' missing a return statement, or it returns None.

我如何做到这一点,没有任何例外的胡说八道?(因为不仅影响一个异常,还影响所有异常)我想修改一个异常。顺便说一句,我已经尝试将suppress\u context设置为True,并尝试从None中引发异常。我还能怎么做呢

如果你问,我想要的一切都不需要了。所需要的只是异常消息和activate()方法的调用

我不会搞乱Python解释器,我将向公众发布这个库,我希望每个人都能看到异常。(它是Python 3.X)


Tags: inpynonereturnmainlinemachinefile