在 python 中调用 raise 语句是否会导致程序退出并回溯或从下一条语句继续执行程序?我想提出异常(exception),但继续执行剩余程序。 好吧,我需要这个,因为我正在第三方系统中运行该程序,并且我希望抛出异常但继续该程序。相关代码是一个必须返回的线程函数。 我不能生成一个新线程只是为了抛出异常并让程序继续吗?
最佳答案
I want to raise an exception but continue with the remainder program.
这没有多大意义:程序控制要么继续执行代码,要么将调用堆栈向上传送到最近的 try
block 。
您可以尝试以下一些:
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.
关于python - 在 python 程序中引发手动异常会终止它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23497255/