İş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_terminateolarak 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