当我无法处理异常时,为什么退出代码为零(“良好”)?

牙签海葵

考虑以下代码片段以及从控制台获得的打印输出:

片段1

表现还好一切都是卑鄙的。

try:
    raise ValueError()
finally:
    print(3)

控制台输出

Traceback (most recent call last):
  File "D:/FILE_MGMT_PYTHON/fbzdfbhedrh.py", line 5, in <module>
    raise ValueError()
ValueError
3

片段2

也表现得很好一切都是卑鄙的。

try:
    raise ValueError()
except type("", (Exception,), dict()):
    print("this is not supposed to print")
finally:
    print(3)

控制台输出

3
Traceback (most recent call last):
  File "D:/FILE_MGMT_PYTHON/fbzdfbhedrh.py", line 14, in <module>
    raise ValueError()
ValueError

片段3

我不明白为什么以下情况不会导致未处理的异常打印到控制台:

def e():
    try:
        raise ValueError()
        x = y + z
        L = [1, 2, 3]
        print(L[9999999999999999999999999999])
    except type("", (Exception,), dict()) as exc:
        print("this is not supposed to print")
        return "strawberries   " + src(exc)
    finally:
        return "finally"

print(e())

控制台输出

finally

Process finished with exit code 0

建立:

------------------
System Information
------------------
      Time of this report: 10/25/2019, 07:22:01
             Machine name: DESKTOP-U5M46TJ
               Machine Id: {403D9006-3BF1-4C4B-AAF5-2AD795E00738}
         Operating System: Windows 10 Pro 64-bit (10.0, Build 18362) (18362.19h1_release.190318-1202)
                 Language: English (Regional Setting: English)
      System Manufacturer: System manufacturer
             System Model: System Product Name
                     BIOS: BIOS Date: 10/31/12 20:41:07 Ver: 36.02 (type: BIOS)
                Processor: Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz (4 CPUs), ~3.3GHz
                   Memory: 4096MB RAM
      Available OS Memory: 4064MB RAM
                Page File: 12606MB used, 3744MB available
              Windows Dir: C:\Windows
          DirectX Version: DirectX 12
      DX Setup Parameters: Not found
         User DPI Setting: 96 DPI (100 percent)
       System DPI Setting: 144 DPI (150 percent)
          DWM DPI Scaling: UnKnown
                 Miracast: Available, with HDCP
Microsoft Graphics Hybrid: Not Supported
 DirectX Database Version: Unknown
           DxDiag Version: 10.00.18362.0387 64bit Unicode

------------------
IDE Information
------------------
PyCharm 2019.1.3 (Community Edition)
Build #PC-191.7479.30, built on May 29, 2019
JRE: 11.0.2+9-b159.60 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

------------------
Python Information
------------------
print(sys.version)
print(sys.version_info)
print(sys.hexversion)

3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)]
sys.version_info(major=3, minor=8, micro=0, releaselevel='final', serial=0)
50856176
凯尔伍德

finally返回将丢弃该异常。该函数无法返回引发异常,而您是在告诉它希望它返回。

将引发异常,但是在try退出语句之前finally需要运行块。您的finally标语栏上写着“不管您以为自己在做什么,我都想回来”。因此,该异常将被丢弃。

类似地,如果您从某个返回try,并且该finally块引发异常,则返回值将被丢弃。

请参阅Python文档中的定义清理操作

  • 如果在执行该try子句期间发生异常,则该异常可以由except子句处理如果该异常不是由except子句处理的finally则在执行子句后将重新引发该异常
    ...
  • 如果finally子句包含return语句,则该finally子句的return语句将子句中的return语句之前执行,而不是执行try

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我跳出循环时触发非零退出代码

来自分类Dev

为什么当我重载数组运算符时我的私有变量为零?

来自分类Dev

当我将暗淡的长度设置为零时,为什么不会引起错误?

来自分类Dev

当我尝试处理溢出菜单上的空值时,为什么会出现此异常?

来自分类Dev

当我使用“ randomSelect”方法替换几行代码时,为什么我的程序无法运行

来自分类Dev

为什么我感到困惑“当命令在BASH中失败时,退出状态代码为0”

来自分类Dev

为什么我的Perl就地脚本即使失败也会以零退出代码退出?

来自分类Dev

为什么我的Perl就地脚本即使失败也会以零退出代码退出?

来自分类Dev

当我在Java中启动个性化异常时,为什么解析器不遵循我的代码顺序?

来自分类Dev

当我必须处理列中的值列表时,SQL的良好做法是什么?

来自分类Dev

为什么异常处理程序中间件在实际处理时记录为“未处理的异常”?

来自分类Dev

为什么我的用户定义的异常无法正确处理?

来自分类Dev

Windows 10 (Python):只有当我从网络运行它时,我才会收到“geckodriver.exe 意外退出。状态代码是:69”。为什么?

来自分类Dev

当我将其退出扩展坞时,为什么我的android应用会重新启动?

来自分类Dev

iOS-当我创建NSManagedObject子类时->链接器命令失败,退出代码为1

来自分类Dev

为什么我在运行此代码时收到异常?

来自分类Dev

为什么当我用 max_count 对 nanopb 中的重复字段进行编码时,bytes.written 为零(空)在另一方面它无法编码

来自分类Dev

为什么我无法让CSS代码为我工作?

来自分类Dev

当我将它放入外部.kv文件时,为什么无法使用screenmanager使用正确的.kv代码?

来自分类Dev

为什么当输入的零钱为 2.2 时,输出显示所需的最小硬币数的正确答案,但当我输入 4.2 时显示错误的输出?

来自分类Dev

当我从终端运行脚本时,我的脚本运行良好,但不适用于cron。为什么?

来自分类Dev

为什么我的代码无法处理大数组输入(> 10000)?

来自分类Dev

当我使用-1退出循环时,为什么会得到ArrayIndexOutOfBounds?

来自分类Dev

当我在android中按回时为什么不退出该应用程序?

来自分类Dev

当我在div中向右浮动三个元素时,为什么会退出呢?

来自分类Dev

当我退出SSH会话时,为什么会出现拒绝权限错误?

来自分类Dev

当我在android中按回时为什么不退出该应用程序?

来自分类Dev

为什么当我调用 root = Tk() 时 Python 会退出?

来自分类Dev

为什么代码段地址为零?

Related 相关文章

  1. 1

    当我跳出循环时触发非零退出代码

  2. 2

    为什么当我重载数组运算符时我的私有变量为零?

  3. 3

    当我将暗淡的长度设置为零时,为什么不会引起错误?

  4. 4

    当我尝试处理溢出菜单上的空值时,为什么会出现此异常?

  5. 5

    当我使用“ randomSelect”方法替换几行代码时,为什么我的程序无法运行

  6. 6

    为什么我感到困惑“当命令在BASH中失败时,退出状态代码为0”

  7. 7

    为什么我的Perl就地脚本即使失败也会以零退出代码退出?

  8. 8

    为什么我的Perl就地脚本即使失败也会以零退出代码退出?

  9. 9

    当我在Java中启动个性化异常时,为什么解析器不遵循我的代码顺序?

  10. 10

    当我必须处理列中的值列表时,SQL的良好做法是什么?

  11. 11

    为什么异常处理程序中间件在实际处理时记录为“未处理的异常”?

  12. 12

    为什么我的用户定义的异常无法正确处理?

  13. 13

    Windows 10 (Python):只有当我从网络运行它时,我才会收到“geckodriver.exe 意外退出。状态代码是:69”。为什么?

  14. 14

    当我将其退出扩展坞时,为什么我的android应用会重新启动?

  15. 15

    iOS-当我创建NSManagedObject子类时->链接器命令失败,退出代码为1

  16. 16

    为什么我在运行此代码时收到异常?

  17. 17

    为什么当我用 max_count 对 nanopb 中的重复字段进行编码时,bytes.written 为零(空)在另一方面它无法编码

  18. 18

    为什么我无法让CSS代码为我工作?

  19. 19

    当我将它放入外部.kv文件时,为什么无法使用screenmanager使用正确的.kv代码?

  20. 20

    为什么当输入的零钱为 2.2 时,输出显示所需的最小硬币数的正确答案,但当我输入 4.2 时显示错误的输出?

  21. 21

    当我从终端运行脚本时,我的脚本运行良好,但不适用于cron。为什么?

  22. 22

    为什么我的代码无法处理大数组输入(> 10000)?

  23. 23

    当我使用-1退出循环时,为什么会得到ArrayIndexOutOfBounds?

  24. 24

    当我在android中按回时为什么不退出该应用程序?

  25. 25

    当我在div中向右浮动三个元素时,为什么会退出呢?

  26. 26

    当我退出SSH会话时,为什么会出现拒绝权限错误?

  27. 27

    当我在android中按回时为什么不退出该应用程序?

  28. 28

    为什么当我调用 root = Tk() 时 Python 会退出?

  29. 29

    为什么代码段地址为零?

热门标签

归档