std :: abort 및 std :: exit (및 기타 : std :: _ Exit, std :: quick_exit)는 저수준 함수입니다. 호출 할 소멸자 (및 경우), 호출 할 다른 정리 함수, 반환 할 값 등 정확히 원하는 작업을 프로그램에 알리기 위해 사용합니다.
std :: terminate는 더 높은 수준의 추상화입니다. (런타임 또는 사용자에 의해) 호출되어 프로그램에서 오류가 발생했으며 어떤 이유로 예외를 throw하여 처리 할 수 없음을 나타냅니다. 그 필요성은 일반적으로 예외 메커니즘 자체에서 오류가 발생할 때 발생하지만 프로그램이 주어진 오류 이상으로 계속되는 것을 원하지 않을 때 언제든지 사용할 수 있습니다. 내 게시물에서 std :: terminate가 호출 될 때 상황의 전체 목록을 컴파일 했습니다.. std :: terminate가 수행하는 작업은 사용자가 제어하기 때문에 지정되지 않습니다. 기능을 등록하여 동작을 구성 할 수 있습니다. 제한 사항은 함수가 오류 사이트로 돌아갈 수없고 예외를 통해 종료 할 수 없다는 것입니다. 그러나 기술적으로는 내부에서 메시지 펌프를 시작할 수도 있습니다. 내부에서 할 수있는 유용한 작업 목록은 다른 게시물을 참조하세요 .
특히 std :: terminate는 처리 할 수없는 throw 된 예외로 인해 std :: terminate가 호출되는 컨텍스트에서 예외 처리기로 간주되며 예외가 무엇인지 확인하고 C ++를 사용하여 검사 할 수 있습니다. 11 std :: rethrow_exception 및 std :: current_exception 사용. 그것은 모두 내 게시물에 있습니다.