如何跳出父函数?

2024-02-06

如果我想打破一个函数,我可以调用return.

如果我在子函数中并且想跳出调用子函数的父函数怎么办?有没有办法做到这一点?

一个最小的例子:

def parent():
    print 'Parent does some work.'
    print 'Parent delegates to child.'
    child()
    print 'This should not execute if the child fails(Exception).' 

def child():
    try:
        print 'The child does some work but fails.'
        raise Exception
    except Exception:
        print 'Can I call something here so the parent ceases work?'
        return
    print "This won't execute if there's an exception."

这就是异常处理的目的:

def child():
    try:
        print 'The child does some work but fails.'
        raise Exception
    except Exception:
        print 'Can I call something here so the parent ceases work?'
        raise Exception  # This is called 'rethrowing' the exception
    print "This won't execute if there's an exception."

那么父函数将不会捕获异常,并且它将继续在堆栈中向上查找,直到找到捕获异常的人。

如果你想重新抛出相同的异常,你可以使用raise:

def child():
    try:
        print 'The child does some work but fails.'
        raise Exception
    except Exception:
        print 'Can I call something here so the parent ceases work?'
        raise  # You don't have to specify the exception again
    print "This won't execute if there's an exception."

或者,您可以将Exception通过说类似的话来表达更具体的内容raise ASpecificException.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何跳出父函数? 的相关文章

随机推荐

  • 使用 $fetch 和 Pinia 的 Nuxt 3 JWT 身份验证

    我正在尝试对不同的 API 进行 JWT 身份验证 由于 nuxtjs auth next 似乎不是最新的 而且据我所知 可以在 Nuxt 3 中使用新的全局方法 fetch 而不是 nuxtjs axios 也不是最新的 我认为它自己编写
  • 例外:需要在环境或系统属性中指定类名:java.naming.factory.initial [重复]

    这个问题在这里已经有答案了 当我运行 JMS 相关应用程序时 遇到以下异常错误 javax naming NoInitialContextException 需要在环境或系统属性中指定类名 或者作为小程序参数 或者在应用程序资源文件中 ja
  • Rails 3 中类似于 Stack Overflow 的 URL 路由

    所以我希望我的应用程序生成诸如堆栈溢出之类的路由 questions id title 我怎样才能在 Rails 中做到这一点 请注意 http stackoverflow com questions 4434266 stack overf
  • Typedoc 不会为导入的模块生成文档

    使用 TypeDoc 生成时 我收到一个空文档 这仅适用于导入的文件 当我将任何类添加到指定的文件中时entryPoints 我得到了这方面的文档 但对于导入的文件我什么也得不到 我有这样的 typedoc json entryPoints
  • 如何在 weka 中表示用于分类的文本?

    您能告诉我如何在 weka 中表示文本分类的属性或类吗 我可以使用什么属性进行分类 词频还是仅词 ARFF 格式的可能结构是什么 你能给我几行该结构的例子吗 预先非常感谢您 最简单的替代方法之一是从 ARFF 文件开始解决二类问题 例如 r
  • 如何连接MySQL数据库?

    C 编程新手 我希望能够访问MySQL数据库 I know MySQL connector NET and MySQL for Visual StudioC 开发所需 我需要将它们安装到我的应用程序中吗 我可以只用程序释放连接器 DLL 吗
  • 系统(“暂停”)澄清

    当我使用系统 暂停 时 屏幕上会显示一行 按任意键继续 这很令人恼火 并且使得读取输出变得相当麻烦 有什么办法可以阻止这种情况的发生吗 您的意思是想按任意键继续 但不想在屏幕上显示 按任意键继续 尝试这个getchar 这将捕获从键盘输入的
  • 为什么 Android 上的 Instagram 不接受 Intent.ACTION_SEND_MULTIPLE

    Instagram 应用程序支持多张照片帖子 https help instagram com 269314186824048 https help instagram com 269314186824048 http blog insta
  • 为什么 DateTime 是 .Net 中的结构体?

    Why is DateTime结构体而不是可继承的类 我希望能够重写 ToString 方法 但我不能 可能是因为它被视为一种小型 简单且不可变的数据结构 很像整数或小数 在这些条件下将其设为结构使得使用 DateTime 非常高效 如果它
  • 如何按共同特征组织数据?

    我在对数据进行编目时遇到了麻烦 这种方式允许我通过数据的通用描述符或特征来引用数据 我很清楚继承 特征 编程概念 和接口 但这些似乎都不是我问题的正确答案 我正在用 JavaScript 编写一个程序 该程序可能包含许多不同的项目或对象 假
  • 使用 Flask 和 LangChain 流式传输 ChatGPT 的结果

    基本上我想用 Flask 和 LangChain 来实现这一点 https www youtube com watch v x8uwwLNxqis https www youtube com watch v x8uwwLNxqis 我正在构
  • Hashtable 与 HashMap 中的哈希函数?

    我知道Hashtable和HashMap之间的区别 然而 这两个类似乎都在使用哈希函数完成工作 Hashtable中使用的哈希函数和HashMap中使用的哈希函数有区别吗 特别是 他们使用的哈希算法有区别吗 这两个类中用于散列的公式是什么
  • Rails 3 命名空间和自定义类的问题(未初始化常量)

    我的 Rails 3 2 11 项目中有一个名为app queries visible discussions rb如下所示 class VisibleDiscussions end 我想为查询命名空间 以便我可以使用类似的方法来调用它Qu
  • 当我在存储库中丢失一些修订时,如何转储所有 svn 数据?

    我想转储旧的 svn 源并将其加载到我的新计算机上 我的旧 svn 存储库大约有 100GB 大 当我使用svnadmin dump xx Repositoryfile gt mydump为了转储 svn 文件 我得到了一个 512Mb 大
  • 如何使用Rcpp来加速for循环?

    我创建了一个 for 循环 我想使用 Rcpp 库来加速它 我对C 不太熟悉 你能帮我让我的功能更快吗 感谢您的帮助 我已经包含了我的算法 代码 输入和输出以及 sessionInfo Here is 我的算法 如果当前价格高于先前价格 则
  • Android Studio:恢复“清除只读状态”对话框

    如果源文件是只读的 Android Studio 将显示一个对话框 询问我是否要清除文件的只读状态 以便可以进行编辑 我曾经错误地选中了 不再显示此对话框 的框 然后单击 确定 从那时起 Android Studio 只是清除文件的只读状态
  • WPF DataGrid 过滤 - CollectionViewSource 刷新

    我想知道如何在单击按钮时刷新 CollectionViewSource 到目前为止我已经
  • ExtJS中有map()函数吗?

    ExtJS有Ext each 函数 但是map 是否也隐藏在某处 我已经很努力了 但还没有找到任何可以填补这个角色的东西 这似乎是一些简单而琐碎的事情 像 Ext 这样大的 JS 库显然必须具备 或者当 Ext 确实不包含它时 将其添加到
  • 是否可以在 django 中指定外部 URL 名称

    我刚刚开始在 Django 中命名我的 URL 模式 因此如果我想更改 URL 模式 我只需在一处更改它即可 例如 url r HomeListView as view name home 并在我的模板中引用它 如下所示 url home
  • 如何跳出父函数?

    如果我想打破一个函数 我可以调用return 如果我在子函数中并且想跳出调用子函数的父函数怎么办 有没有办法做到这一点 一个最小的例子 def parent print Parent does some work print Parent