只是好奇,为什么以下代码
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)
您在类中打印,而不是在其初始化块中打印.试试这个
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)