在python程序中引发手动异常是否会终止它?
在python中调用raise语句是否会导致程序通过回溯退出,还是从下一个语句继续程序?我想引发一个异常,但继续余数程序。 我需要这个,因为我在第三方系统中运行程序,我希望抛出异常,然后继续程序。相关代码是一个必须返回的线程函数。 我不能生成一个新线程来抛出异常并让程序继续吗 我想引发一个异常,但继续余数程序 这没有多大意义:程序控件要么继续执行代码,要么沿着调用堆栈向上移动到最近的在python程序中引发手动异常是否会终止它?,python,exception,Python,Exception,在python中调用raise语句是否会导致程序通过回溯退出,还是从下一个语句继续程序?我想引发一个异常,但继续余数程序。 我需要这个,因为我在第三方系统中运行程序,我希望抛出异常,然后继续程序。相关代码是一个必须返回的线程函数。 我不能生成一个新线程来抛出异常并让程序继续吗 我想引发一个异常,但继续余数程序 这没有多大意义:程序控件要么继续执行代码,要么沿着调用堆栈向上移动到最近的try块 相反,您可以尝试以下方法: traceback模块(用于读取或检查您看到的带有异常的回溯信息;您可以轻
try
块
相反,您可以尝试以下方法:
模块(用于读取或检查您看到的带有异常的回溯信息;您可以轻松地将其作为文本获取)traceback
模块(用于在程序运行时保存诊断)日志记录
def somewhere():
print 'Oh no! Where am I?'
import traceback
print ''.join(traceback.format_stack()) # or traceback.print_stack(sys.stdout)
print 'Oh, here I am.'
def someplace():
somewhere()
someplace()
输出:
Oh no! Where am I?
File "/home/kos/exc.py", line 10, in <module>
someplace()
File "/home/kos/exc.py", line 8, in someplace
somewhere()
File "/home/kos/exc.py", line 4, in somewhere
print ''.join(traceback.format_stack())
Oh, here I am.
哦,不!我在哪里?
文件“/home/kos/exc.py”,第10行,在
某地
文件“/home/kos/exc.py”,第8行,在某处
某处
文件“/home/kos/exc.py”,第4行,在某处
打印“”。加入(回溯。格式\u堆栈())
哦,我来了。
只有未捕获的异常才会终止程序。如果您提出第三方软件不准备捕获和处理的异常,程序将终止。引发异常类似于软中止:您不知道如何处理错误,但您为使用代码的任何人提供了这样做的机会,而不仅仅是调用sys.exit()
如果您没有准备好退出程序,请不要引发异常。只需记录错误即可。为什么不先试试看呢?:)