반응형
1. 예외에 대한 보증 3가지
1) 기본 보증(basic guarantee)
특정 함수 내에서 발생한 예외가 이 함수를 빠져나오더라도 어떤 리소스도 누수되지 않으며, 모든 객체의 상태가 유효한 상태를 유지함을 의미 .NET CLR은 기본 보증을 준수한다.
2) 강력한 보증(sttong guarantee)
기본 보증에 더하여 예외 발생 시에도 프로그램의 상태가 변겨오디지 않음을 추가로 보증함
LINQ 쿼리를 사용하면 기본적으로 강력한 예외 보증 요건을 준수하게 된다.
함수형 프로그래밍 스타일을 사용할 수 없는 경우 방어적인 프로그램을 위해 기존 데이터의 복사본을 유지하고 작업이 완료된 후 값을 교환하는 방법을 사용하면 된다.
(이러한 지침은 변경 불가능한 데이터 구조를 사용한느 것이 좋다)
3) 예외 없음보증(no-throw guarantee)
예외가 발생하지 않음을 보증한다.
결론
finalizer, Dispose(), when, 델리게이트의 타깃이 되는 메서드 등에서는 어떠한 상황에서도 예외를 발생시켜서는 안된다.
반응형
'C# > Effective C#' 카테고리의 다른 글
[Effective C#] Item 50 예외 필터의 다른 활용 예를 살펴보라 (0) | 2023.06.12 |
---|---|
[Effective C#] Item 49 catch 후 예외를 다시 발생시키는 것보다 예외 필터가 낫다. (0) | 2023.06.12 |
[Effective C#] Item47 사용자 지정 예외 클래스를 완벽하게 작성하라 (0) | 2023.06.12 |
[Effectvie C#] Item 46 리소스 정리를 위해 using과 try/finally를 활용하라 (0) | 2023.06.12 |
[Effectvie C#] Item 45 메서드가 실패했음을 알리기 위해서 예외를 이용하라 (0) | 2023.05.23 |