Aracılığıyla paylaş


deneyin, catch ve throw ifadelerini (C++)

C++ özel durumlar için try, catch ve throw anahtar sözcükler.

Bir throw ifadesi, olağanüstü durum ya da hata bildirir.Herhangi bir türde bir nesne bir throw ifadesi işlenen kullanabilirsiniz.Bu nesne, genellikle hata hakkındaki bilgileri iletmek için kullanılır.Genellikle, std::exception sınıfı veya standart Kitaplığı'nda tanımlanan türetilen sınıflardan biri veya bunlardan hiçbiri uygun değilse kendinizinkini std::exception türetmek gerekir.

Bir try bloðu bir istisna bir veya birden çok deyimleri kapsar.

Bir veya birden çok catch bloğu try bloğunun hemen uygulayın.Her catch bloğu, bu özel durum türünü belirtir.

Aşağıdaki sözdizimi gösterilmiştir try blok ve onun işleyicileri.İstediğinizi düşünelim GetNetworkResource() edinme verileri ağ üzerinden bağlanmak ve öğesinden türetilmeli, kullanıcı tanımlı sınıflar iki özel durum türü olan std::exception özel durumlar catch deyimi içinde başvuruya göre iletilir Not:

MyData md;
try {
   // code that could throw an exception
   md = GetNetworkResource();
}
catch (networkIOException& e) {
   // code that executes when an exception of type
  // networkIOException is thrown in the try block
//…
// Log error message in the exception object.
   cerr << e.what();
}
catch (myDataFormatException& e) {
   // code that handles another exception type
//…
 cerr << e.what();

}

// The following syntax shows a throw expression:

MyData GetNetworkResource()
{
    //...
    if(IOSuccess == false)
        throw networkIOException("Unable to connect");
    //...
    if(readError)
        throw myDataFormatException("Format error"); 
    // ...
}

Notlar

Sonra kodu try yan tümcesinin guarded bölüm kodu.Throw ifadesi atar (raises) bir özel durum.Kod bloğundan sonra catch yan tümcesi özel durum işleyici ve throw ve catch ifadelerde türü uyumluysa throw ifadesi tarafından atılan özel durum (işleç) yakalar._____ Türü eşleşen catch bloğu içinde yöneten kurallar listesi için bkz.Catch deyimi üç nokta belirtiyorsa (...) bir tür yerine catch blok c özel durumlar ve bellek koruması gibi sistem veya uygulama tarafından üretilen özel durumlar da dahil olmak üzere özel durum, her türlü işleme, sıfır ve kayan nokta ihlalleri bölün.Catch bloğu bir işleyici, programın sipariş çalıştı son işleyicisini olması gerektiğinden, try blok.Catch (…) kullanırken dikkatli olun; Genellikle bu tür bir catch bloğu, hataların günlüğünü tut ve program yürütme durdurma önce herhangi bir özel temizleme gerçekleştirmek için kullanılır.Catch bloğu yakalandı belirli özel durumunu işlemesi bildiği sürece devam etmek bir program izin vermez.

A throw ifadesi şu anda işlenen exception hiçbir işlenen ile re-throws.Böyle bir ifade yalnızca görünmesi gereken bir catch işleyicisi veya bir işlev içinde çağrıldığı bir catch işleyicisi.Re-thrown özel durum, özgün özel durum nesnesi (kopya değil) nesnesidir.Örne?in:

try {
   throw CSomeOtherException();
}
catch(...) {  // Catch all exceptions – dangerous!!!
   // Respond (perhaps only partially) to exception
   throw;       // Pass exception to some other handler
}

Ayrıca bkz.

Başvuru

C++ özel durum işleme

C++ anahtar sözcükler

İşlenemeyen C++ özel

__uncaught_exception

Diğer Kaynaklar

Nasıl yapılır: tanıtıcı özel durumlar olarak temel sınıf Kurucularını (C++)