2011-12-12 4 views
2

일부 오래된 C 수학 라이브러리에 대해 Boost.Test를 사용하여 단위 테스트를 작성하고 있습니다. 지정된 입력에 대해 Integer Division By Zero 시스템 예외를 발생시키는 것으로 알려진 테스트 된 함수 중 하나입니다. 원하는 행동이라고 가정 해 보겠습니다.이 경우 부정적인 테스트를 작성하고 싶습니다.Boost.Test 라이브러리를 사용하여 0으로 나누기 정수 나누기 처리 방법?

BOOST_REQUIRE_THROW(statement, exception);은 C++ 스타일 예외 (이 매크로는 내부적으로 try {} catch {}을 사용함)이므로 나를 위해 작동하지 않습니다.

시스템 수준에서 장애가 발생할 것으로 예상 할 때 대/소문자를 처리하는 올바른 방법은 무엇입니까?

+0

Windows의 경우 구조적 예외 처리 (SEH)를 사용하여 div를 0으로 catch 할 수 있습니다. –

+0

Windows OS입니까? – lapk

+0

어떤 OS를 사용하고 있습니까? – Lalaland

답변

1

Windows이기 때문에 _set_se_translator() Windows API를 살펴 보시기 바랍니다. C++ catch으로 구조화 된 예외를 처리 할 수 ​​있습니다.

핸들러를 설치하는 등의 다른 방법이 있지만 최소한의 프로그래밍 작업으로 C++ 예외처럼 균일 한 예외 처리가 가능합니다.

+0

좋아,이 부분을 더 자세히 살펴볼 것입니다. Visual Studio 프로젝트 옵션에서 "Enable C++ exceptions"를 "Yes with SEH Exceptions (/ EHa)"로 설정하여 비슷한 효과를 얻을 수 있다고 생각합니다. – Mickey