Aracılığıyla paylaş


Özel durumlar: Yakalama ve özel durumları silme

Aşağıdaki yönergeler ve örnekler yakalamak ve özel durumlar silmek nasıl gösterir.Daha fazla bilgi için deneyin, catch, ve throw anahtar sözcükler Bkz: C++ özel durum işleme.

Bu kod bir özel durum yakalar her özel durum silme hatası bellek sızıntısına neden olduğu kendi özel durum işleyicileri bunlar işlemek, istisna nesneleri silmeniz gerekir.

Sizin catch bir özel durum bloğu silmek gerekir zaman:

  • Catch blok yeni bir özel durum atar.

    Tabii ki, aynı yeniden istisna, özel durum silmemeniz gerekir:

    catch(CException* e)
    {
       if (m_bThrowExceptionAgain)
          throw; // Do not delete e
       else 
          e->Delete();
    }
    
  • Yürütme verir içinden catch blok.

[!NOT]

Silerken bir CException, kullanma silmek özel durumu silmek için üye işlevi.Kullanmayın silmek anahtar sözcüğünü, çünkü özel öbek üzerinde değilse başarısız olabilir.

Ve özel durumları yakalamak

  • Use deneyin ayarlamak için anahtar sözcüğü bir deneyin blok.İçinde bir özel durum herhangi bir program deyimleri yürütme bir deneyin blok.

    Use catch ayarlamak için anahtar sözcüğü bir catch blok.Özel durum işleme kodu koyun bir catch blok.Kod catch yalnızca blok yürütülen kod içinde deneyin blok içinde belirtilen türde bir yer istisna catch ifadesi.

    Aşağıdaki iskelet programlarını nasıl deneyin ve catch blokları normal olarak düzenlenmiştir:

    try
    {
       // Execute some code that might throw an exception.
       AfxThrowUserException();
    }
    catch( CException* e )
    {
       // Handle the exception here.
       // "e" contains information about the exception.
       e->Delete();
    }
    

    Bir özel durum yakalandığında ilk denetim geçirmeden catch özel durum bildirimi eşleşen özel durumun türünü engelleyin.Farklı türde durumlarla sıralı seçmeli olarak ele catch aşağıda listelenen engeller:

    try
    {
       // Execute some code that might throw an exception.
       AfxThrowUserException();
    }
    catch( CMemoryException* e )
    {
       // Handle the out-of-memory exception here.
       e->Delete();
    }
    catch( CFileException* e )
    {
       // Handle the file exceptions here.
       e->Delete();
    }
    catch( CException* e )
    {
       // Handle all other types of exceptions here.
       e->Delete();
    }
    

Daha fazla bilgi için bkz: durumlar: mfc özel makroları dönüştürme.

Ayrıca bkz.

Kavramlar

Özel durum işleme mfc