使用代码块:
1 import re
2 import sys
3 import traceback
4
5 def foo(arg):
6 if isinstance(arg, dict):
7 return arg.get('key', 0)
8 return 0
9
10 arg = {}
11
12
13
14 try:
15 foo(arg)
16 except Exception:
17 lines = traceback.format_exception(*sys.exc_info())
18 for line in lines:
19 m = re.match(r' File .*, line (\d+), in foo\n.*\n', line)
20 if m and int(m.group(1)) < 5:
21 print("Foo threw!")
22 sys.exit()
23 raise
24 else:
25 sys.stderr.write("foo did not throw!")
问题是:我是否可以在第10-14行之间添加一些代码逻辑,从而使最终的代码控制流可以到达第21行Foo threw!
打印出来的地方?注意,1-10行和14行之后的代码不能修改。你知道吗
我试图编写另一个函数来引发一个异常,用它替换foo()
,它没有工作,因为第20行的if
测试< 5
,“保护”异常发生在第5行之前。你知道吗
不,因为这些线:
这意味着错误必须发生在
foo
之前的第1-4行中,因此即使在foo
的第一行中添加错误也是不可能的。你知道吗相关问题 更多 >
编程相关推荐