我有一个用于记录空闲线程的计数器。每次空闲线程从队列中获取作业时,计数器将减少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
如何让柜台正确?无论是否抛出异常,任何获得反击权的方法都是正确的?
答案 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