当我使用Ctrl + c终止Python脚本时,内部会发生什么情况?

Alok Singh Mahor

这些天来,我正在深入学习Python的异常处理功能。我遇到了exception SystemExit在从正式的Python文档中阅读此内容时,我想到了一个问题,当我按Ctrl+终止Python脚本时会发生什么c

让我们看下面的示例代码:

def func1(a,b):
    print "func1: "+str(a/b)
    #some more functions

def func2(a,b):
    print "func2: "+str(a/b)
    #some more functions

if __name__=="__main__":
    import random

    count=0
    for i in range(1000000):
            count=count+1
            print "count: "+str(count)
            try:
                    func1(random.randint(-2,3),random.randint(-2,3))
            except KeyboardInterrupt:
                    raise
            except:
                    print "error in func1"
            try:
                    func2(random.randint(-2,3),random.randint(-2,3))
            except KeyboardInterrupt:
                    raise
            except:
                    print "error in func2"

            print "\n"

在此示例代码中,我正在抓取,KeyboardInterrupt因此可以通过按Ctrl+停止脚本c我是否SystemExit应该抓住这个机会使这段代码更成熟?如果是,那为什么呢?实际上,这个问题是我主要问题的来源,出现在标题上。所以不要以为我在一个帖子中问两个不同的问题。

eep

您通常并不需要捕捉SystemExit,因为它是什么使exit()sys.exit()职能的工作:

sys.exit([arg])

从Python退出。这是通过引发SystemExit异常来实现的,因此可以执行语句finally子句指定的清除操作try,并且有可能在外部级别拦截出口尝试。

例:

try:
    exit()
except SystemExit:
    print "caught"

因此,通常您不想首先捕获所有异常(通过使用空except:子句)。最好的方法通常是使异常处理程序尽可能具体。否则,它将使您的应用程序调试异常困难,因为它要么完全隐藏错误,要么至少使诊断细节变得困难。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我使用Ctrl + c终止Python脚本时,内部会发生什么情况?

来自分类Dev

当我在Unity中单击“锁定启动器”时,内部会发生什么?

来自分类Dev

当我在Unity中单击“锁定启动器”时,内部会发生什么?

来自分类Dev

当我们向下转换时,内部会发生什么?

来自分类Dev

当我“将Spring作为JUnit测试运行”时,内部会发生什么?

来自分类Dev

当我返回传递给函数的引用参数时,内部会发生什么?

来自分类Dev

当我们在C中将数字转换为较小的数字时,会发生什么情况?

来自分类Dev

当我在shell中执行文件时,会发生什么情况?

来自分类Dev

iOS:当我从其他类调用重写的方法时,会发生什么情况

来自分类Dev

当我在shell中执行文件时,会发生什么情况?

来自分类Dev

当我执行driver.findElementById(“ some id”)。click()时,内部会发生什么?它执行JavaScript吗?

来自分类Dev

了解我使用Ctrl-v转储终端字符序列时会发生什么情况?

来自分类Dev

如果我将在两次更新之间(从终端)终止更新,将会发生什么情况?

来自分类Dev

如果我将在两次更新之间(从终端)终止更新,将会发生什么情况?

来自分类Dev

当我从RAM运行持久性存储实时USB时会发生什么情况?

来自分类Dev

当我离开INT_MAX以外时会发生什么情况?

来自分类Dev

当我将unpack()作为lua的函数参数调用时,会发生什么情况?

来自分类Dev

当我从RAM运行持久性存储实时USB时会发生什么情况?

来自分类Dev

当我们将jar提交给风暴集群时会发生什么情况?

来自分类Dev

当我在依赖jar的项目中进行更改时会发生什么情况?

来自分类Dev

使用ALTER SCHEMA传输表时索引会发生什么情况?

来自分类Dev

如果我们不关闭用过的末端管道,会发生什么情况:Linux / C

来自分类Dev

在obj-c中使用计时器时,如果我的方法花费太长时间才能完成,会发生什么情况?

来自分类Dev

当我使用 Ctrl 和箭头键导航时出现奇怪的字符

来自分类Dev

当我从12.04LTS升级到14.04LTS时,如果失去了互联网连接,会发生什么情况?

来自分类Dev

如果使用Objective C在xcode 7 +,ios 9中创建项目时忘记添加核心数据会发生什么情况

来自分类Dev

当我在此函数调用中使用括号使它的行为有所不同时,会发生什么情况?

来自分类Dev

升级Firebase时,我的iOS应用程序(当前在App Store上运行)会发生什么情况?

来自分类Dev

升级Firebase时,我的iOS应用程序(当前在App Store上运行)会发生什么情况?

Related 相关文章

  1. 1

    当我使用Ctrl + c终止Python脚本时,内部会发生什么情况?

  2. 2

    当我在Unity中单击“锁定启动器”时,内部会发生什么?

  3. 3

    当我在Unity中单击“锁定启动器”时,内部会发生什么?

  4. 4

    当我们向下转换时,内部会发生什么?

  5. 5

    当我“将Spring作为JUnit测试运行”时,内部会发生什么?

  6. 6

    当我返回传递给函数的引用参数时,内部会发生什么?

  7. 7

    当我们在C中将数字转换为较小的数字时,会发生什么情况?

  8. 8

    当我在shell中执行文件时,会发生什么情况?

  9. 9

    iOS:当我从其他类调用重写的方法时,会发生什么情况

  10. 10

    当我在shell中执行文件时,会发生什么情况?

  11. 11

    当我执行driver.findElementById(“ some id”)。click()时,内部会发生什么?它执行JavaScript吗?

  12. 12

    了解我使用Ctrl-v转储终端字符序列时会发生什么情况?

  13. 13

    如果我将在两次更新之间(从终端)终止更新,将会发生什么情况?

  14. 14

    如果我将在两次更新之间(从终端)终止更新,将会发生什么情况?

  15. 15

    当我从RAM运行持久性存储实时USB时会发生什么情况?

  16. 16

    当我离开INT_MAX以外时会发生什么情况?

  17. 17

    当我将unpack()作为lua的函数参数调用时,会发生什么情况?

  18. 18

    当我从RAM运行持久性存储实时USB时会发生什么情况?

  19. 19

    当我们将jar提交给风暴集群时会发生什么情况?

  20. 20

    当我在依赖jar的项目中进行更改时会发生什么情况?

  21. 21

    使用ALTER SCHEMA传输表时索引会发生什么情况?

  22. 22

    如果我们不关闭用过的末端管道,会发生什么情况:Linux / C

  23. 23

    在obj-c中使用计时器时,如果我的方法花费太长时间才能完成,会发生什么情况?

  24. 24

    当我使用 Ctrl 和箭头键导航时出现奇怪的字符

  25. 25

    当我从12.04LTS升级到14.04LTS时,如果失去了互联网连接,会发生什么情况?

  26. 26

    如果使用Objective C在xcode 7 +,ios 9中创建项目时忘记添加核心数据会发生什么情况

  27. 27

    当我在此函数调用中使用括号使它的行为有所不同时,会发生什么情况?

  28. 28

    升级Firebase时,我的iOS应用程序(当前在App Store上运行)会发生什么情况?

  29. 29

    升级Firebase时,我的iOS应用程序(当前在App Store上运行)会发生什么情况?

热门标签

归档