Özel Durum Oluşturma

Not

Bu içerik, Çerçeve Tasarım Yönergeleri: Kurallar, Deyimler ve Yeniden Kullanılabilir .NET Kitaplıkları için Desenler, 2. Sürüm'den Pearson Education, Inc.'in izniyle yeniden yazdırılır. Bu baskı 2008'de yayımlandı ve kitap o zamandan beri üçüncü baskıda tamamen revize edilmiştir. Bu sayfadaki bazı bilgiler güncel olmayabilir.

Bu bölümde açıklanan özel durum oluşturma yönergeleri, yürütme hatasının anlamının iyi bir tanımını gerektirir. Yürütme hatası, bir üyenin yapmak üzere tasarlandığı şeyi (üye adının belirttiği gibi) gerçekleştiremediği durumlarda oluşur. Örneğin, yöntem çağırana OpenFile açık bir dosya tanıtıcısı döndüremezse, yürütme hatası olarak kabul edilir.

Çoğu geliştirici, kullanım hataları için sıfıra veya null başvuruya bölme gibi özel durumları kullanmaya alışmış durumdadır. Framework'te, yürütme hataları da dahil olmak üzere tüm hata koşulları için özel durumlar kullanılır.

❌ Hata kodları DÖNDÜRMEYİN.

Özel durumlar, çerçevelerdeki hataları raporlamanın birincil aracıdır.

✔️ DO, özel durumlar oluşturarak yürütme hatalarını bildirir.

✔️ Kodunuz daha fazla yürütme için güvenli olmayan bir durumla karşılaşırsa özel durum oluşturmak yerine (.NET Framework 2.0 özelliğini) çağırarak System.Environment.FailFast işlemi sonlandırmayı GÖZ ÖNÜNDE BULUNDURUN.

❌ Mümkünse, normal denetim akışı için özel durumlar KULLANMAYIN.

Sistem hataları ve olası yarış koşullarına sahip işlemler dışında çerçeve tasarımcıları, kullanıcıların özel durum oluşturmayan kod yazabilmesi için API'ler tasarlamalıdır. Örneğin, bir üyeyi çağırmadan önce önkoşulları denetlemek için bir yol sağlayabilirsiniz, böylece kullanıcılar özel durum oluşturmayan kod yazabilir.

Başka bir üyenin önkoşullarını denetlemek için kullanılan üye genellikle bir testçi olarak adlandırılır ve işi gerçekten yerine getiren üyeye de doer adı verilir.

Tester-Doer Deseninin kabul edilemez bir performans yüküne sahip olabileceği durumlar vardır. Bu gibi durumlarda, Try-Parse Deseni olarak adlandırılır (daha fazla bilgi için bkz . Özel Durumlar ve Performans ).

✔️ Özel durumlar oluşturmanın performans etkilerini GÖZ ÖNÜNDE BULUNDURUN. Saniye başına 100'ün üzerindeki atış hızları, çoğu uygulamanın performansını önemli ölçüde etkiler.

✔️ DO, üye sözleşmesinin ihlali nedeniyle (sistem hatası yerine) genel olarak çağrılabilen üyeler tarafından oluşan tüm özel durumları belgeleyin ve bunları sözleşmenizin bir parçası olarak değerlendirin.

Sözleşmenin bir parçası olan özel durumlar bir sürümden sonraki sürüme değişmemelidir (örneğin, özel durum türü değişmemelidir ve yeni özel durumlar eklenmemelidir).

❌ Bir seçeneğe göre oluşturma yapabilen veya olmayan genel üyeleriNIZ DEĞİlDİ.

❌ Dönüş değeri veya out parametre olarak özel durumlar döndüren genel üyelere sahip DEĞİlDİr.

Genel API'lerden özel durum döndürmek yerine bunları döndürmek, özel durum tabanlı hata raporlamanın birçok avantajını yener.

✔️ Özel durum oluşturucu yöntemlerini kullanmayı GÖZ ÖNÜNDE BULUNDURUN.

Farklı yerlerden aynı özel durumu atmak yaygın bir durumdur. Kod kabarmasını önlemek için özel durumlar oluşturan ve özelliklerini başlatan yardımcı yöntemleri kullanın.

Ayrıca, özel durum oluşturan üyeler inlined alınmıyor. Throw deyimini oluşturucunun içine taşımak, üyenin inlined olmasını sağlar.

❌ Özel durum filtresi bloklarından özel durumlar ATMAYIN.

Özel durum filtresi özel durum oluşturduğunda, özel durum CLR tarafından yakalanırken filtre false döndürür. Bu davranış, filtrenin yürütülmesinden ve açıkça yanlış döndürülmesinden ayırt edilemez ve bu nedenle hata ayıklaması çok zordur.

❌ Finally bloklarından açıkça özel durumlar oluşturmaKTAN KAÇıNıN. Oluşturan çağrı yöntemlerinden kaynaklanan örtük olarak oluşan özel durumlar kabul edilebilir.

Porsiyonlar © 2005, 2009 Microsoft Corporation. Tüm hakları saklıdır.

Pearson Education, Inc. in Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraryes, 2nd Edition by Krzysztof Cwalina and Brad Abrams izniyle yeniden yazdırıldı ve 22 Ekim 2008'de Addison-Wesley Professional tarafından Microsoft Windows Geliştirme Serisi'nin bir parçası olarak yayımlandı.

Ayrıca bkz.