실행 중에 예외가 발생하는 경우 부작용이없는 방법을 어떻게 설명합니까?

StackOverflow https://stackoverflow.com/questions/283487

  •  08-07-2019
  •  | 
  •  

문제

나는 이것과 다른 관련 속성에 사용 된 용어를 기억할 수 없습니다.

편집 - 아마도 그러한 개념이 존재하지 않을 수도 있지만 효과적인 C ++ (또는 더 효과적인 C ++)에서 무언가를 읽은 것을 기억합니다. 여기서 스왑을 사용하여 스왑을 사용하여 벡터 스왑 함수가 예외를 던지지 않도록 보장 되었기 때문에 기능의 마지막 변경 사항을 커밋했습니다.

도움이 되었습니까?

해결책

나는 당신이 함수가 "예외-안전"이라고 말하는 것을 의미한다고 생각합니다. 예를 들어보십시오 http://en.wikipedia.org/wiki/exception_safety.

Wikipedia 기사는 안전을 다양한 수준으로 나눕니다. 이것은 여기에 관련된 것입니다.

2. 강력한 예외 안전 또는 변화없는 보증으로도 알려진 커밋 또는 롤백 시맨틱 : 운영이 실패 할 수 있지만 실패한 작업에는 부작용이 없어 모든 데이터가 원래 값을 유지합니다.

예외 안전 및 커밋 또는 롤백 시맨틱을 소개하는 STL 설계 문서에 대한 참조가 있습니다. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/n1077.asc

다른 팁

당신은 생각하고있을 것입니다 예외 보증, 특히 "강한 보증".

편집을 읽은 후, 나는 당신의 제목이 약간 부정확하다고 생각합니다. 당신은 그것이 부작용이 없다는 것을 의미합니까? 예외가 발생하는지 여부 (현재 문구에 따라) 또는 예외가 발생하면 부작용이 없지만, 방법이 예외를 던지지 않고 완료되면 부작용이있을 수 있습니까? 꽤 큰 차이가 있습니다 :)

후자는 가속 C# 2008에서 "예외 중립성"으로 설명됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top