如何精确计算在python中的try / except?

时间:2017-08-30 08:36:11

标签: python

我有一个用于记录空闲线程的计数器。每次空闲线程从队列中获取作业时,计数器将减少1;工作完成后,计数器将增加1.代码如下:

while true:
   try:
      self.queue.get() # exception may thrown here
      self.counter -= 1
      # other check goes here
      self.process() # exception may thrown here
      self.counter += 1
   except Exception as err:
      self.counter += 1 # if exception thrown from get(), then it's wrong

如何让柜台正确?无论是否抛出异常,任何获得反击权的方法都是正确的?

1 个答案:

答案 0 :(得分:0)

通常,如果您有两个语句可以触发相同的异常(或者您不关心哪些异常)并且您希望发生不同的操作,那么您将需要不同的try / except子句。

我假设你只想在get()成功时调用process()。否则你必须调整这段代码中的缩进,并且可能在第二次尝试中使用“finally”。

while true:
    try:
       self.queue.get() # exception may thrown here
    except Exception as err:
        pass
    else:
        self.counter -= 1
        try:       
            self.process() # exception may thrown here
        except Exception as err:
            pass
        self.counter += 1