12
使用IDisposable和“使用”作为获取“范围内行为”以确保异常安全的手段是否在滥用?
我经常在C ++中使用的一种方法是让类通过构造函数和析构函数A处理另一个类的状态进入和退出条件,以确保如果该范围内的某些事物引发了异常,则当范围已退出。就首字母缩略词而言,这并不是纯粹的RAII,但这仍然是一个既定模式。BA 在C#中,我经常想做 class FrobbleManager { ... private void FiddleTheFrobble() { this.Frobble.Unlock(); Foo(); // Can throw this.Frobble.Fiddle(); // Can throw Bar(); // Can throw this.Frobble.Lock(); } } 需要这样做 private void FiddleTheFrobble() { this.Frobble.Unlock(); try { Foo(); // Can throw this.Frobble.Fiddle(); // Can throw Bar(); // Can throw } finally { …
111
c#
exception-handling
raii