当前位置: 首页 > 面试题库 >

返回吃异常

梁丘俊材
2023-03-14
问题内容

我发现以下行为至少 很奇怪

def errors():
    try:
        ErrorErrorError
    finally:
        return 10

print errors()
# prints: 10
# It should raise: NameError: name 'ErrorErrorError' is not defined

returnfinally子句中使用时,该异常消失。那是个错误吗?那在任何地方都有记录吗?

但是真正的问题(我将标记为正确的答案)是:
python开发人员允许这种奇怪行为的原因是什么?


问题答案:

您询问了有关Python开发人员的推理。我不能为他们说话,但是没有其他行为可以理解。函数可以返回值,也可以引发异常。它不能同时做到。“最终”子句的目的是提供“保证”运行的清除代码,而不管例外情况如何。通过在finally子句中放置一个return语句,您已经声明无论情况如何,无论什么情况,您都想返回一个值。如果Python行为符合您的要求,并引发了异常,则它将破坏“
finally”子句的约定(因为它将无法返回您告诉它返回的值)。



 类似资料:
  • 函数setUpMapIfNeeded()中的getFragmentManager返回。我把我的片段与activity_main.xml分开,这里是我的代码: activity_main.xml: fragment_main.xml: 这是我的*.Java文件: 我已尝试将getSupportFramentManager与Android.support.v4.app.DialogFragment支持

  • 问题内容: 我正在使用一个API,该API声称如果成功则返回true,如果失败则返回false。但是,它也声称如果失败,则抛出不同的异常。它如何返回false并引发异常? 问题答案: 不能从单个函数调用中引发异常并返回值。 如果发生错误,它可能会执行类似返回的操作,但是如果输入无效,则会引发异常。 编辑:PaulPRO发布了一个(现已删除)答案,指出从 技术上讲, 有可能在返回当前值时在另一个线程

  • web.xml 应用程序-servlet.xml context.xml(在tomcat conf文件夹中) 谢谢你的建议和帮助。

  • 问题内容: 我如何才能使此代码返回值 而不冻结浏览器 。 您当然可以用新方法重写它。 编辑: 我需要至少在其他时间从php文件中获取20个变量。 问题答案: 这是不可能的。 Javascript在UI线程上运行;如果您的代码等待服务器回复,则浏览器必须保持冻结状态。 相反,您需要使用回调返回值: 请注意,这两个回调将以不可预测的顺序运行。 您应该修改设计,以便可以在单个AJAX请求中获得所有二十个

  • 更新 我已经读了十几篇关于这个话题的文章,但没有一篇涉及到这个基本问题。我将在本文末尾列出一个参考资料部分。 原始帖子 我对函数的理解是,它返回一个promise。 MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function 在我的程序中,我可以编写如下内容: 我

  • 问题内容: 我有个问题。我已经在过去的3个小时中一直试图弄清楚这一点,但是我不知道为什么这没有按照我的预期工作。请知道我还是Java语言的新手,因此,如果有任何明显的内容,我深表歉意。 但是,通过此代码,我试图从Twitter获取承载令牌,并返回2个完全不同的东西。 当我获得预期的输出时: 但是,如果I ,我将以JSON形式获取http请求。我在下面粘贴了我的代码,希望有人能够提供帮助。 问题答案