Python异常排序

dre*_*obb 2 python python-2.x

只是好奇,为什么以下代码

import sys
class F(Exception):
    sys.stderr.write('Inside exception\n')
    sys.stderr.flush()
    pass

sys.stderr.write('Before Exception\n')
sys.stderr.flush()

try:
    raise F
except F:
    pass
Run Code Online (Sandbox Code Playgroud)

输出:

Inside exception
Before Exception
Run Code Online (Sandbox Code Playgroud)

并不是:

Before exception
Inside Exception
Run Code Online (Sandbox Code Playgroud)

dfb*_*dfb 8

您在类中打印,而不是在其初始化块中打印.试试这个

import sys
class F(Exception):
    sys.stderr.write('Inside exception\n')
    sys.stderr.flush()
    pass
Run Code Online (Sandbox Code Playgroud)

单独.也就是说,当你打电话时它没有运行raise F.试试这个

import sys
class F(Exception):
    def __init__():
        sys.stderr.write('Inside exception\n')
        sys.stderr.flush()

raise new F()
Run Code Online (Sandbox Code Playgroud)