Ответ 1
Идеальный вопрос для меня.
Вы можете подавить контекст исключения, то есть первую часть трассировки, путем явного повышения исключения from None
:
>>> try:
raise KeyboardInterrupt
except:
raise Exception from None
Traceback (most recent call last):
File "<pyshell#4>", line 4, in <module>
raise Exception from None
Exception
Это было оформлено в PEP 409 и улучшено в PEP 415. исходный запрос об ошибках для этого был подан мной сам.
Обратите внимание, что подавление контекста фактически не приведет к удалению контекста из нового исключения. Таким образом, вы можете получить доступ к исходному исключению:
try:
try:
raise Exception('inner')
except:
raise Exception('outer') from None
except Exception as e:
print(e.__context__) # inner