그래서 일부 코드를 작성했지만 구문, 유형 및 기타 컴파일 타임 오류를 제외하면 C++에서 다른 예외는 발생하지 않습니다. 그래서 아주 사소한 프로그램이 테스트하기로 결정C++ 예외 처리
내가 g의 ++를 사용하여 컴파일 된#include<iostream>
int main() {
std::count<<5/0<<std::endl;
return 1
}
는, g ++ 내가 0으로 분할되었다하지만 여전히 코드를 컴파일 말을 나에게 경고했다. 그럼 내가 달렸을 때 정말 큰 임의 번호를 인쇄 했어. 내가 알고 싶을 때, C++이 예외를 어떻게 처리합니까? 0으로 정수 나누기 예외가 throw되어야하고 프로그램을 종료해야 할 때 매우 간단한 예입니다.
필자의 전체 프로그램을 거대한 try 블록에 넣고 일정한 예외를 잡아야합니까? 파이썬에서 예외가 발생하면 프로그램이 즉시 종료되고 오류를 출력합니다. C++은 무엇을합니까? 실행을 멈추고 프로그램을 종료하는 런타임 예외가 있습니까?
고마워. 다른 질문입니다. std :: cout 대신 std :: cerr을 사용하면 예외가 발생하거나 오류 스트림으로 인쇄됩니까? 그리고 만약 내 자신의 예외 (foo라고 말하면)를 만들고 내 코드에서 foo를 던지면 내 프로그램이 즉시 죽을 것이고 foo.what()는 출력 될 것인가? 아니면 명시 적으로 C++에 그렇게해야합니까? – user1413793
@ user1413793 :'std :: cerr'에 쓰면 단순히 오류 스트림으로 출력됩니다. 명령 행 ('>'vs'2>')에서 리다이렉션을 통해 다른 곳으로 출력 스트림과 오류 스트림을 보낼 수 있습니다. 예외를 던지면 아무데도 잡히지 않으면 프로그램이 즉시 종료되고 오류 메시지가 출력됩니다. (보다 정확하게는'std :: terminate'라는 함수가 호출됩니다.이 함수의 기본 동작은 프로그램을 종료하고 예외 메시지를 출력하는 것이고,'std :: set_terminate'를 호출하여 동작을 무시할 수 있습니다. 관심 있어요.) – HighCommander4