SORU
17 Mart 2014, PAZARTESİ


Neden bu istisnalar atmak için değil miyiz?

Üzerinde this MSDN page devletler geldim:

Sistem atmayın.İstisna, Sistemi.SystemException, Sistem.NullReferenceException, ya da Sistem.Indexoutofrangeexception kendi kaynak kodlarınızı bilerek.

Ne yazık ki, niçin rahatsız etmez. Nedenlerini tahmin edebiliyorum, ama birileri bu konuda daha yetkili bir fikir sunabilir umuyoruz.

İlk ikisi biraz mantıklı, ama son iki istihdam etmek istersiniz olanlar gibi (aslında var) gibi.

Ayrıca, bu bir kaçınmalısınız tek istisna vardır? Eğer başkaları varsa, onlar nedir ve neden de kaçınılmalıdır?

CEVAP
17 Mart 2014, PAZARTESİ


Exception böyle çok belirsiz olarak tüm durumlar için, ve temel tür. Şimdiye kadar sadece herhangi bir yararlı bilgi içermiyor çünkü bu özel durum olmamalı. Kodu özel durumlar için alıcı arıyor tamamen istenmeyen diğer sistem özel kasıtlı olarak atılan özel durum (mantık) belirsizliği ortadan kaldırmak ve gerçek hataları işaret olamaz.

Aynı nedenle de 12* *için geçerlidir. Eğer türetilen türler listesine bakarsanız, çok farklı semantiği ile diğer istisnalar çok sayıda görebilirsiniz.

NullReferenceException IndexOutOfRangeException farklı bir tür. Şimdi bu özel durum, onları atma yaniolabiliriyi olacak. Ancak, yine de genelde kendi mantığı içinde bazı gerçek hata var demek gibi bu atmak istiyorsun, olmaz. Örneğin, bir null başvuru özel durumu null olan bir nesnenin bir üye erişmeye çalıştığınız anlamına gelir. Eğer kodunuzda bir olasılık varsa, o zaman her zaman açıkça null için kontrol etmelisiniz ve daha faydalı bir durum yerine (örneğin ArgumentNullException) atmak. Benzer şekilde, IndexOutOfRangeExceptionGeçersiz dizin (diziler—listeleri) erişmek ler oluşur. Her zaman ilk etapta bunu ve örneğin sınırları bir dizi ilk kontrol emin olun.

Orada birkaç diğer istisnalar gibi bu ikisi, örneğin InvalidCastException DivideByZeroException, atılmış için belirli hataları kodunuzu ve genellikle yani sizin yaptığınız yanlış bir şey ya da değil kontrol etmek için bazı geçersiz değerler ilk. Atarak onları bilerek kodunuzu, sadece yapım o sert için telefon kodu olup olmadığını belirlemek için onlar atılmış nedeniyle bazı hata kodu, ya da sadece, çünkü karar için yeniden onlar için bir şey senin uygulanması.

Tabii ki, bazı istisnalar (hah) bu kuralları vardır. Eğer tam olarak mevcut bir eşleşen bir özel durum neden olabilir bir şey inşa, özellikle eğer bazı yerleşik davranış maç için çalışıyorsanız, bunu kullanmak için çekinmeyin. Sadece çok özel durum türü sen seç.

İhtiyaç doldurur (özel) bir özel durum elde edinceye kadar genel olsa da, her zaman beklenen belirli özel durumlar için kendi özel türlerinizi oluşturma düşünmelisiniz. Kütüphane kod yazıyorsun özellikle bu çok yararlı istisna kaynakları ayırmak için olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dive In

    Dive In

    17 Temmuz 2013
  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008