Python:捕获异常后如何停止执行?

Ros*_*ent 2 python exception try-catch

我有一个类 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
Run Code Online (Sandbox Code Playgroud)

我通过以下方式使用这些类:

datasetObj = dataset()
datasetObj.get_data()
datasetObj.do_something()
Run Code Online (Sandbox Code Playgroud)

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

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

小智 5

你可以做几件事。

import sys # top of your code
sys.exit(1) 
Run Code Online (Sandbox Code Playgroud)

我相信您也可以立即提出例外:

raise 
Run Code Online (Sandbox Code Playgroud)

登录后立即执行此操作除外

  • “raise”是执行某些操作然后发送异常的正确方法。如果您的代码是从另一个代码调用的,则更是如此:让它有机会处理异常。 (2认同)