我想我已經讀過with
中的異常不允許__exit__
被調用正確。如果我在這張紙上錯了,請原諒我的無知。python如何安全地處理上下文管理器中的異常
所以我有一些僞代碼在這裏,我的目標是使用在__enter__
記錄起始日期時間,並返回一個鎖的ID鎖的上下文,並在__exit__
記錄末端datetime和釋放鎖:
def main():
raise Exception
with cron.lock() as lockid:
print('Got lock: %i' % lockid)
main()
除了安全地存在上下文之外,我還能如何提出錯誤?
注意:我故意在這個僞代碼中引發基本異常,因爲我想在任何異常時安全地退出,而不僅僅是預期的異常。
注意:替代/標準的併發預防方法是不相關的,我想將這些知識應用到任何一般的上下文管理中。我不知道不同的背景是否有不同的怪癖。
PS。 finally
塊與相關嗎?
你在哪裏得到這些信息?我的理解是''有''上下文是*設計用於*處理清理如果發生任何未處理的異常。 – 2015-01-26 20:16:33
@JoelCornett我認爲我從SO頁面獲得了專門處理嵌套上下文的信息。 – ThorSummoner 2015-01-26 20:42:33