방프리

21.09.27 Chapter5. 예외처리 (Item 48) 본문

C#/Effective C#

21.09.27 Chapter5. 예외처리 (Item 48)

방프리 2021. 9. 27. 21:02

Item 48: 강력한 예외 보증을 준수하는 것이 좋다.

 

해당 항목에서 총 3가지의 예외 보증을 소개한다. 각각 기본 보증, 강력한 보증, 예외 없음 보증이다.

첫 번째로 기본 보증은 특정 함수 내에서 발생한 예외가 이 함수를 빠져나오더라도

어떤 리소스도 누수되지 않으며, 모든 객체의 상태가 유요한 상태를 유지하는 것을 뜻한다.

NET CLR은 이 기본 보증을 준수하며 모든 기본 보증은 강력한 보증을 준수함으로써 해결이 가능하다.

두 번째로 강력한 보증이란 정의를 내리자면 다음과 같다.

  • 방어적인 프로그램을 위해 수정할 데이터에 대한 복사본을 마련한다.
  • 복사해둔 데이터를 수정한다. 수정 과정에서 예외가 발생할 수 있다.
  • 수정된 복사본과 원본 데이터를 교환한다. 이 교환 작업은 예외를 일으켜서는 안 된다.

마지막으로 예외 없음 보장은 특정 메서드가 예외를 전혀 발생시키지 않으며, 항상 완벽하게 수행될 뿐 

아니라 예외가 이 메서드 밖으로 전파되지 않을 것임을 보장하는 것이다.

다만 이러한 제약 때문에 한정된 루틴이나 메서드에서만 적용이 가능하다.

특히 가장 조심해야할 곳은 finalizer, Dispose(), when 절 등에서 가장 조심해야 한다.

Comments