İşlenilmeyen C++ özel durumları
Geçerli özel durum için eşleşen bir işleyici (veya üç nokta catch
işleyicisi) bulunamazsa, önceden tanımlanmış terminate
çalışma zamanı işlevi çağrılır. (İşleyicilerinizden herhangi birinde açıkça çağırabilirsiniz terminate
.) varsayılan eylemi terminate
çağırmaktır abort
. terminate
'in uygulamadan çıkmadan önce programınızda başka bir işlevi çağırmasını isterseniz, tek bağımsız değişkeni olarak çağrılacak işlevin adıyla birlikte set_terminate
'i çağırın. Programınızın herhangi bir noktasında set_terminate
'i çağırabilirsiniz. yordamı terminate
her zaman için bağımsız değişken set_terminate
olarak verilen son işlevi çağırır.
Örnek
Aşağıdaki örnek, bir char *
özel durumu oluşturur, char *
türündeki özel durumları yakalayacağı belirtilen bir işleyici içermez. set_terminate
çağrısı, terminate
'e term_func
çağırmasını bildirir.
// exceptions_Unhandled_Exceptions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
void term_func() {
cout << "term_func was called by terminate." << endl;
exit( -1 );
}
int main() {
try
{
set_terminate( term_func );
throw "Out of memory!"; // No catch handler for this exception
}
catch( int )
{
cout << "Integer exception raised." << endl;
}
return 0;
}
Çıktı
term_func was called by terminate.
term_func
işlevi, ideal olarak exit
çağrısıyla programı veya geçerli iş parçacığını sonlandırmalıdır. Sonlandırmazsa ve bunun yerine arayanına dönerse, abort
çağrılır.
Ayrıca bkz.
Özel durumlar ve hata işleme için modern C++ en iyi yöntemleri
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin