【问题标题】:Python : How to stop execution after exception has been caught?Python:捕获异常后如何停止执行?
【发布时间】:2018-10-19 17:13:06
【问题描述】:

我有一个类 dataset.py,它有一堆函数,还实现了一个记录器,如下所示:

class dataset:
    def get_data():
        try:
            if(sourcefile != None):
                if not os.path.isfile(sourceFile):
                    raise FileNotFoundError
        except FileNotFoundError:
            logger.error('File not found!')
    def do_something():
        return

我以下列方式使用这些类:

datasetObj = dataset()
datasetObj.get_data()
datasetObj.do_something()

现在,即使 get_data() 引发 FileNotFoundError,它也会在 except 块中进行处理,并且程序会继续执行 do_something()。

我该如何阻止这种情况?如果存在未找到文件错误,则应停止执行。 如何将我的异常返回给调用者并使我的 main.py 不再执行?

【问题讨论】:

  • 你为什么会发现异常?
  • 因为我希望记录器将其记录到文件中。如果我没有抓住它,我就无法记录它。
  • 您可以在记录错误后重新raise FileNotFoundError
  • 要么 not 捕获异常(让代码 using dataset()) 处理它),或者在实例上设置标志并更改稍后调用 do_somehing() 时的行为。
  • @RoshanJoeVincent:您可以随时重新引发异常。

标签: python exception-handling try-catch


【解决方案1】:

你可以做几件事。

import sys # top of your code
sys.exit(1) 

我相信您也可以立即提出异常:

raise 

在您登录后立即执行此操作,除了

【讨论】:

  • raise 将是做某事然后发送异常的正确方法。如果您的代码是从另一个代码中调用的,则更是如此:让它有机会处理异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多