Python 仅获取异常,而不是整个堆栈跟踪

Python 仅获取异常,而不是整个堆栈跟踪,python,python-3.x,exception,try-except,raise,Python,Python 3.x,Exception,Try Except,Raise,我只想获取异常消息,而不是整个堆栈跟踪。下面是一个玩具示例: def div(): 尝试: 打印(0/0) 除: 引发异常('除以零,请检查输入!!!') def func1(): 尝试: 分区() 除: 引发异常('func11 try'中出现错误) func1() 预期产出 Exception: Divide by zero, please check the input!!! Exception: Error in func11 try ['Exception: Divide by

我只想获取异常消息,而不是整个堆栈跟踪。下面是一个玩具示例:

def div():
尝试:
打印(0/0)
除:
引发异常('除以零,请检查输入!!!')
def func1():
尝试:
分区()
除:
引发异常('func11 try'中出现错误)
func1()
预期产出

Exception: Divide by zero, please check the input!!!
Exception: Error in func11 try
['Exception: Divide by zero,please check the input!!!',
 'Exception: Error in func 2!!!']

非常感谢您的帮助。

如果您不想获取整个堆栈跟踪,可以尝试以下方法:

def div():
    try:
        print(0/0)
    except Exception as e:
        print(e)

@Kairav Parekh的答案适用于您的情况,它不会打印整个堆栈跟踪,它只打印错误,在大多数情况下,这是用户友好的

你只需要修改他的代码来满足你的需求,你可以在里面放一个break语句,除了下面这样

def div():
    try:
        print(0/a)
    except Exception as e:
        print(e)
        break #break here
div()

下面的解决方案对我有效

导入回溯
def div():
尝试:
打印(0/0)
除:
引发异常('除以零,请检查输入!!!')
def func2():
尝试:
分区()
除:
引发异常('函数2中出现错误!!!')
def func1():
例外情况=[]
尝试:
func2()
例外情况除外,如e:
msg=traceback.format_exc()
msg_list=msg.split('\n')
[如果line.startswith('Exception:'),则为msg_列表中的行追加(行)]
返回异常
func1()
输出

Exception: Divide by zero, please check the input!!!
Exception: Error in func11 try
['Exception: Divide by zero,please check the input!!!',
 'Exception: Error in func 2!!!']

在我的例子中,我有深度嵌套的函数,其思想是使用一条用户友好的消息(没有堆栈跟踪)。我找到了“traceback.format\u exception\u only”,但不确定如何在我的案例中使用它。这段代码应该适用于您的案例。如果要添加一个用户友好的行,则只需添加另一个打印语句。但它不会中断嵌套函数,然后在需要的地方添加中断语句。如果目的是除了打印的内容之外,在
块中添加
sys.exit()
,则可能需要在
中添加
sys.exit()