环境:Python 2.6.5,带有Pydev的Eclipse Standard / SDK(版本Kepler SR2)
有没有办法找出是否正在执行一行代码 a"尝试"在Python?
我正在处理的代码有时会尝试调用方法的块,并且有一种情况我需要一个条件,具体取决于脚本是否会以异常退出而脚本将继续运行。 / p>
我需要在每个try语句之前不设置标志的情况下完成此操作,但是如果有一种方法可以全局覆盖每个try语句,以便在try语句中设置标志并清除标志时超出了可行的try语句。
由于我正在使用庞大的代码库,因此在启动每个try块之前设置一个标志会非常大。
我尝试在试用中比较调试模式中的变量而不是尝试,我没有注意到任何可以关闭的内容。
示例:
def raise_exception():
# need way to find out if executing within a 'try' and set the boolean in_try
# Todo: define 'in_try' here
if in_try == True:
raise Exception('Continuing script')
else:
raise Exception('Exiting script')
def hello():
print 'hello'
try:
self.raise_exception()
except:
pass
def goodbye():
print 'goodbye'
self.raise_exception()
答案 0 :(得分:1)
听起来我想要根据你是否从try
块调用所述函数来改变函数的行为。为什么不简单地将您的功能定义为
def my_func(param0, param1, called_from_try_block=False):
pass
然后可以像这样调用你的函数:
my_func(4, 2)
try:
my_func(4, 2, True)
except:
pass
答案 1 :(得分:0)
你不需要一个变量
try:
# need way to find out if executing within a 'try' and set the boolean in_try
# Todo: define 'in_try' here
print 'try is being executed'
except:
pass
答案 2 :(得分:0)
如何在程序顶部将名为in_try
的变量设置为False
,并在try
的开头设置in_try
为{{ 1}}如此:
True
运行时:
in_try = False
if in_try == True:
print 'In try-except!'
else:
print 'Not in try-except!'
try:
in_try = True
if in_try == True:
print 'In try-except!'
else:
print 'Not in try-except!'
in_try = False
except:
pass
if in_try == True:
print 'In try-except!'
else:
print 'Not in try-except!'