SORU
16 NİSAN 2011, CUMARTESİ


Ne için ApplicationException .NET?

İstisnalar atmak, genelde yerleşik özel sınıflar, ArgumentNullException örneğin NotSupportedException kullanın. Ancak, bazen özel bir durum kullanmam gerekiyor ve bu durumda yazıyorum:

class SlippedOnABananaException : Exception { }
class ChokedOnAnAppleException : Exception { }

ve benzeri. Ve benim kod bu ben yakalayın. Ama bugün karşısında ApplicationException sınıf yerine bunu kullanarak olmalıdır? geldim Ne için?

Farklı isimler (genellikle herhangi bir bireyin işlevselliği gerek yok) ile etkili bir şekilde aynı Özel sınıflar çok verimsiz görünüyor. Ama ApplicationException Genel alıcı ve ekstra kod hatanın ne olduğunu belirlemek için kullanma fikri pek hoşuma gitmiyor.

Nerede ApplicationException benim kod ile uyum sağlayacaktır?

CEVAP
16 NİSAN 2011, CUMARTESİ


Kısa cevap: hiçbir yerde.

Microsoft, geliştiricilerin tüm özel ApplicationException istisnalar devralmak için tasarlanmış olan geçmişin bir kalıntısı. Kısa bir süre sonra fikirlerini değiştirdiler ve özel istisnalar Hariç temel sınıf türetmek gerektiğini tavsiye etti. MSDN Best Practices for Handling Exceptions bkz.

Bunun için daha yaygın olarak dağıtılan nedenlerinden biri Framework Design Guidelines Jeffery Richter: bir varlık görünüşe göre geliyor

Sistem.ApplicationExceptionbir parçası olmaması gereken bir sınıftır .NET Çerçeve. Özgün fikir sınıftan türetilmiş olmasıydıSystemExceptionnon-CLR istisnalar elde edilecek ise istisnalar CLR (veya sistem) atılan gösteriyor kendiniApplicationException. Ancak, özel sınıflar çok bu sablona uymuyor. Örneğin,TargetınvocationexceptionCLR tarafından atılmış olan) türetilmiştirApplicationException. YaniApplicationExceptionsınıf tüm anlamını kaybetti. Bu temel sınıf türetmek için neden bazı kod daha yukarı çağrı yığını temel sınıf yakalamak için izin vermektir. Artık tüm uygulama özel durumları yakalamak mümkün oldu.

Bu yüzden siz sahipsiniz. Yönetici özeti ApplicationException değildirzararlısadeceişe yaramaz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • New Challenger - Game Reviews

    New Challeng

    20 Temmuz 2006
  • xdadevelopers

    xdadeveloper

    25 Aralık 2009