Visual Studio 2017의 C++에서 assert 메서드를 테스트 중이며 예상 한대로 어설 션 예외가 발생합니다. 그러나 모든 catch (!) 예외 설정을 해제 한 후에는 catch 블록에서 처리하기 전에 예외가 발생합니다 (아래 예제 참조). Visual Studio 예외 설정이 무시되었습니다. C++
try {
assert(validate(1363821) == false);
assert(validate(3848238) == true);
printf("Validation correctly implemented.");
} catch (exception & e){
const string error = e.what();
printf("Validation failed!");
}
그래서 제 질문은 다음과 같습니다
- 은 내가 잘못 여기서 뭔가를하고 있습니까?
- 또는 assert 메서드는 catch 블록에서 처리 할 수없는 일종의 예외를 throw하고 항상 치명적인 예외를 생성합니까? 그렇다면 치명적인 오류를 만들지 않고 어떻게 assert 메서드를 구현할 수 있습니까? 아래 그림과 같습니다
어떤 도움이 크게 감사합니다!
"나는 여전히 catch 블록에 의해 처리되기 전에 예외가 발생한다."라는 말은 메시지 박스가 생기고, 비주얼 스튜디오가 아니며, assert가 어떻게 구현되는지를 의미한다. – tkausl
@tkausl messagebox의 제목은 "Microsoft Visual C++ 런타임 라이브러리"이며 '디버그 오류!'메시지가 나타납니다. 메시지. 이 비주얼 스튜디오 아닌가요? 그렇지 않다면 어떻게이 메시지 박스를 막을 수 있습니까? 또는 변경할 수없는 디자인 별 동작입니까? – etri
릴리스 모드에서 컴파일하십시오. 그러나 코드가 예상대로 작동하는지 여부를 확인하는 것처럼 보이기 때문에 테스트 프레임 워크를 사용해야합니다. – tkausl