Czy istnieje sposób na wychwycenie wyjątków, które w przeciwnym razie nie są obsługiwane (w tym wyjątki wyrzucane poza blokiem catch)?Catching wszystkich nieobsługiwanych wyjątków C++?
Nie przejmuję się wszystkimi normalnymi czynnościami czyszczenia wykonanymi z wyjątkami, tylko że mogę je przechwycić, napisać do log/powiadomić użytkownika i zakończyć program, ponieważ wyjątki w tych przypadkach są ogólnie śmiertelne, nieodwracalne błędy.
coś takiego:
global_catch()
{
MessageBox(NULL,L"Fatal Error", L"A fatal error has occured. Sorry for any inconvience", MB_ICONERROR);
exit(-1);
}
global_catch(Exception *except)
{
MessageBox(NULL,L"Fatal Error", except->ToString(), MB_ICONERROR);
exit(-1);
}
Chodzi o to, że naprawdę nie chcesz, aby umieścić całą moją aplikację w jednym wielkim bloku „spróbuj super” ... ponieważ wydajność jest trochę krytyczny ... Znam tam kilka gdzieś, bo np. studio wizualne potrafi wykryć/złapać/cokolwiek takiego wyjątkowego i zaoferować przerwanie i debugowanie. –
Działa blok super-testu. Płacisz koszty ustawienia go raz w głównym. Raz nie jest to problem z wydajnością. – EvilTeach
tylko raz? Jestem pewien, że raz w bloku try utrzymywał jakiś "ślad" do czyszczenia po rzucie, czyniąc koszt oparty na zawartości bloku? –