Stwórz funkcję wychodzącą z programu która najpierw zmienia rozmiar bufora konsoli, a następnie zamyka program z pewnym kodem wyjścia przekazanym w argumencie.
Całego main'a napisz tak:
try {
// wszystkie instrukcje
}
catch(std::exception& e){
// wywołanie funkcji zamykającej
}
// wywołanie funkcji zamykającej
W ten sposób to co rzuca wyjątkiem nie zamknie ci programu z takim rozmiarem bufora jaki ustawiłeś podczas wykonania. Ważne jest to aby w przypadku funkcji i metod noexcept zachować ostrożność ponieważ mogą one zamknąć twój program bez zmiany do poprzedniego rozmiaru.
W celu zabezpieczenia się przed taką funkcją (lub metodą) mamy 2 opcje:
1. Jesteśmy pewni, że wykona się to bez wyjątku.
2. Możemy zmienić rozmiar bufora przed wywołaniem i po wywołaniu przywrócić go.