python - python 中的 sys.excepthook 行为

标签 python exception

我对 sys.excepthook 的工作原理感到非常困惑。 鉴于以下情况,我找不到继续前进的方法,以防异常被钩子(Hook)捕获。 简而言之,我从未达到打印声明,但我确信理论上可以继续。 返回 True 或 False 也没有帮助吗?

import sys
from shutil import copy
from subprocess import Popen


def my_except_hook(etype, value, tb):
    print("got an exception of type", etype)


if __name__ == '__main__':
    sys.excepthook = my_except_hook
    copy('sdflsdk')
    print("here")
    Popen('sdflkjdklsdj')

然后输出是:

('got an exception of type', <type 'exceptions.TypeError'>)

最佳答案

sys.excepthook 确实不打算强制转换为 VB 样式“On Error Resume Next”。可能有一种方法可以做到这一点,但你真的应该包装自己的代码来做到这一点。 system.excepthook 专为 python 交互式解释器之类的东西而设计,以便它们打印异常并将您返回到交互式 shell。要实现您寻求的简历行为,您应该考虑这样做:

import sys
from shutil import copy
from subprocess import Popen

if __name__ == '__main__':
    try:
        copy('sdflsdk')
    except:
        pass
    print("here")
    try:
        Popen('sdflkjdklsdj')
    except:
        pass

关于python - python 中的 sys.excepthook 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365549/

相关文章:

python - 有选择地更改列中的值。 python Pandas

android - C++ 运算符 new 和 new[] 会在 Android 上抛出 std::bad_alloc 吗?

python - 尝试安装pygame

Python:垃圾收集失败?

python - 在sqlalchemy中,当子表有多个父表的外键时,如何使用多态连接表继承?

python - 使用scrapy和XPath处理html文本节点

java - Spring Framework 中的 NullPointerException(或什么?)

java - Netbeans 没有给出提示

java - 获取 DIY 链表类以抛出异常

java - 由 : java. lang.ClassNotFoundException : org. apache.commons.io.FileUtils、maven pom.xml 引起