python - 在 python 程序中引发手动异常会终止它吗?

标签 python exception

在 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/

相关文章:

javascript - 从网页上可能嵌套的 <span> 中提取所有文本

python - 在另一个函数中调用函数

python - TensorFlow 广播

c# - 防止引发异常

python - 如何避免过多地使用 'self'

python - 如何使用 python 表?

android - 我的 "MyException"显示 Toast 在抛出线程时会导致问题。我应该如何重新组织异常处理?

c++ - 是否可以同时有两个或多个事件异常?

c# - "No imaging component suitable to complete this operation was found."

java - 如何在执行 catch block 之前检查 try block 中的 2 个条件 - Selenium WebDriver Java