有没有办法找出一行代码是否正在"尝试"在Python?

时间:2014-07-09 04:20:06

标签: python exception exception-handling try-catch

环境: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()

3 个答案:

答案 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!'