數據庫事務的ACID屬性中的A原子性告訴我們,在數據庫上執行的每個事務都像二進制數字系統,0或1,全部或全部沒有。有沒有什麼辦法可以在OOP語言(如C#,Java)中實現原子性?
是否有可能在編程語言如Java或C#或任何其他通用語言中實現相同的功能?例如
public static Ticket GetTicket(string filePath) {
counter++;
Application app = new Application(filePath);
.
.
.
也許,我給了一個壞榜樣,但我相信這應該足以給出一個想法。現在,想象一下,如果創建Application
對象的行將引發異常,那麼應用程序的執行將暫停,並且靜態變量counter
的狀態將已經發生變化,並且系統狀態發生變化。有沒有辦法來防止在拋出異常之前執行語句造成的損害?
如果你使用不可變的類型,這是*唯一*繼續的方式。這是他們許多好處之一。 –