C++을 사용하면서 코딩을 하다보면 프로그램을 종료해야 할 때가 있을 것이다 보통은 프로그램이 순차적으로 실행되면서 마지막으로
1
return 0;
만나게 되면 끝이 나지만 이렇게만 프로그램을 종료해야 한다면 다양한 상황에서 요구 조건에 따라 종료해야 할 때 불편함과 문제가 생길 것이다 그래서 C++은 다양한 종료 방법을 제공하고 있는데 이번 글에선 이러한 다양한 방법으로 C++ 프로그램을 종료하는 법에 대해 알아보려 한다
return 문 사용하기
1
2
3
4
int main() {
// 코드
return 0; // 성공적인 종료
}
앞에서 말했듯 C++에서 가장 기본적인 종료 방법은 main 함수에서 return 문을 사용하는 것이다 return의 값은 프로그램의 종료 상태를 나타내며 일반적으로 0은 성공을 의미한다
exit 함수 사용하기
1
2
3
4
5
6
#include <cstdlib>
int main() {
// 코드
exit(0); // 성공적인 종료
}
다음은 cstdlib 헤더에 정의된 exit 함수를 사용하는 것으로 exit 사용하면 main 함수가 아니더라도 언제든지 프로그램을 종료할 수 있다
std::abort 함수 사용하기
1
2
3
4
5
6
#include <cstdlib>
int main() {
// 코드
std::abort(); // 비정상 종료
}
세 번째는 std::abort 함수로 std::abort는 프로그램을 즉시 종료시키며 종료 상태 코드를 반환하지 않는다 이 방법은 주로 비정상적인 상황에서 사용된다
std::terminate 함수 사용하기
1
2
3
4
5
6
#include <exception>
int main() {
// 코드
std::terminate(); // 비정상 종료
}
이번에는 std::terminate 함수를 사용하는 방법으로 예외 처리 중에 프로그램을 종료하는 방법이다 하지만 기본적으로 std::abort를 호출한다
std::quick_exit 함수 사용하기 (C++11 이상)
1
2
3
4
5
6
#include <cstdlib>
int main() {
// 코드
std::quick_exit(0); // 빠른 종료
}
다음은 C++11에서 도입된 방법으로 std::quick_exit는 exit와 유사하지만 일부 종료 처리를 생략하기에 빠른 종료가 필요한 상황에 유용하게 사용된다
예외 던지기
1
2
3
4
int main() {
// 코드
throw std::runtime_error("오류 발생"); // 예외로 인한 종료
}
마지막은 예외를 던져 프로그램을 종료하는 것이다
결론
마치며 시간이 중요한 사람을 위해서 각 방법을 표로 정리하고 끝내겠다
종료 방법 | 특징 | 사용 시점 및 상황 |
---|---|---|
return | main 함수에서 반환 값으로 프로그램 종료 | 정상적 종료, 반환 값으로 종료 상태 전달 |
exit | 표준 라이브러리 함수, 종료 상태 코드 반환 | 어디서든 호출 가능, 정리 루틴 수행 후 종료 |
std::abort | 비정상적 종료, 종료 상태 코드 반환 안 함 | 오류나 예외 상황에서 즉시 종료 |
std::terminate | 예외 처리 중 호출, 기본적으로 std::abort 호출 | 예외 처리 불가능 시 호출, 비정상적 종료 |
std::quick_exit | C++11 이상, 일부 종료 처리 생략 | 빠른 종료가 필요할 때, 특정 리소스 정리 생략 가능 |
예외 던지기 | 예외를 던져서 프로그램 종료 | 예외 처리되지 않은 오류 발생 시 |