SORU
12 Aralık 2011, PAZARTESİ


C nasıl bir özel durum

Özel durum işleme(at özelleştirmek için nasıl yani,,, kendi amaçlarım için ifadeleri try) çok kötü bir anlayış var.

Örneğin, aşağıdaki gibi bir fonksiyon tanımlıyorum, int compare(int a, int b){...}

İşlevi ya da bir b negatif bir mesajla istisna atmak istiyorum.

Nasıl bir işlev tanımında bu yaklaşım gerekir?

CEVAP
12 Aralık 2011, PAZARTESİ


Basit:

#include <stdexcept>

int compare( int a, int b ) {
    if ( a < 0 || b < 0 ) {
        throw std::invalid_argument( "received negative value" );
    }
}

Standart Kütüphane atabilir built-in exception objects güzel bir koleksiyon ile geliyor. Her zaman değer atmak gerektiğini unutmayın ve referans tarafından yakalamak:

try {
    compare( -1, 3 );
}
catch( const std::invalid_argument& e ) {
    // do stuff with exception... 
}

Tabloların her deneyin sonra birden yakalamak olabilir (), bu yüzden eğer isterseniz farklı hata tipleri ayrı ayrı işleyebilir.

Ayrıca re-at özel durumlar:

catch( const std::invalid_argument& e ) {
    // do something

    // let someone higher up the call stack handle it if they want
    throw e;
}

Ve özel durumları ne olursa olsun yakalamak türü:

catch( ... ) { };

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bashirsultani

    bashirsultan

    22 Mart 2010
  • BlackmillMusic

    BlackmillMus

    3 Kasım 2010
  • Kurtindo Pop Games

    Kurtindo Pop

    2 HAZİRAN 2013