SORU
22 Aralık 2008, PAZARTESİ


C kodunda hata işleme

"Uygulama hata, hata işleme gelince" C kütüphanesi olarak, istikrarlı bir şekilde. iyi düşünün ne

Düşünüyordum iki yolu vardır:

Her zaman hata kodu döndürür. Tipik bir işlevi, bu gibi görünecektir:

MYAPI_ERROR getObjectSize(MYAPIHandle h, int* returnedSize);

Her zaman hata gösterici bir yaklaşım sağlar:

int getObjectSize(MYAPIHandle h, MYAPI_ERROR* returnedError);

İlk yaklaşımı kullanarak Olası hata işleme onay doğrudan işlev çağrısı üzerine yerleştirildiği böyle bir kod yazmak için:

int size;
if(getObjectSize(h, &size) != MYAPI_SUCCESS) {
  // Error handling
}

Daha iyi hata işleme kodu burada daha görünüyor.

MYAPIError error;
int size;
size = getObjectSize(h, &error);
if(error != MYAPI_SUCCESS) {
    // Error handling
}

Ancak, veri döndürmek için dönüş değeri kullanarak kodu daha okunaklı hale getirir bence, bir şey ikinci örnekte boyutu değişkeni için yazılmış belli.

Bu yaklaşımlar herhangi bir tercih ya da belki de onları karıştırmak ya da başka bir şey kullanmalı mıyım, neden herhangi bir fikir var mı? Kütüphane yolu çok dişli kullanmak daha acı verici hale getirmek eğilimindedir beri küresel hata Devletleri bir hayranı değilim.

EDİT: C bu konuda kesin fikirleri de duymak ilginç şu an benim için bir seçenek değil bu yana istisnalar dahil olmadıkları sürece

CEVAP
22 Aralık 2008, PAZARTESİ


Her iki yaklaşım da kullandım, ikisi de benim için iyi çalıştı. Kullanmak olursa olsun, ben her zaman bu prensibi uygulamak için deneyin:

Sadece olası hataları programcı hataları, hata kodu geri dönmek istemiyorsan, kullanma işlevi içinde belirtmektedir.

Giriş doğrulayan bir onaylama işlemi hata denetimi çok fazla program mantığı belirsiz ise işlevi ne beklediğini net bir şekilde iletişim kurar. Çeşitli hata durumları için ne yapacağınıza karar vermek gerçekten tasarımı karmaşık hale getirebilir. Neden programcı asla tek seferde ısrar ederseniz yerine bir null işaretçi nasıl işleyeceğini anlamaya?

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS

    ASUS

    22 EKİM 2005
  • beautyexchange

    beautyexchan

    4 EYLÜL 2006
  • makemebad35

    makemebad35

    17 NİSAN 2006