Java ve .NET'te istisnalarla çalıştıktan sonra ve istisnaları nasıl / ne zaman / neden yakaladığınızla ilgili birçok makale okuduktan sonra , sonunda olası bir istisna olduğunu gördüğümde kafamda attığım aşağıdaki adımları veya bir istisna (Java) yakalamalıyım ... asla olmasa bile (iç ...). Ve en azından benim için çalışıyor gibi görünüyor:
- Bu istisna dışında yapabileceğim yararlı bir şey var mı (günlük kaydı hariç)? Yanıt evetse, geçici çözüm kodunu yazın ve geçici çözüm özel durumlar oluşturabilirse, 2'ye gidin:
- İstisnayı bir çalışma zamanı istisnasının etrafına sarın, atın, 3'e gidin.
- Olası bir veritabanı / işlem işleminin başlatıldığı üst düzey sınıfta, istisnayı yakalayın, işlemi geri alın, istisnayı yeniden oluşturun.
- Üst düzey sınıfta (işlemin başlatıldığı sınıf olabilir), slf4j ( örneğin log4j ile birleştiğinde ) veya log4net gibi bir günlük çerçevesi kullanarak istisnayı günlüğe kaydedin . Mümkünse, istisnayı doğrudan uygulamanın geliştiricilerinden oluşan bir dağıtım listesine e-postayla gönderin.
- Bir GUI varsa, soruna neyin neden olduğunu en kullanıcı dostu şekilde gösteren bir hata mesajı görüntüleyin; istisna / yığın izlemesini görüntüleme, kullanıcı umursamıyor ve bir NullPointerException olduğunu bilmesine gerek yok.
Ben de bazı karmaşık tedavi veri hataları nedeniyle yürütülemediğinde bilerek bir "iş" istisna ("istisna" sınıfı genişleterek oluşturduğum yeni bir istisna) dediğim atılan , adım 0 eklemeniz gerekir , AMA analiz sırasında istisna durumları olarak tanımlandıkları bilinmektedir.
Giriş kısmı hariç, "mikera" tarafından yazılan noktalara tamamen katılıyorum; Sadece istisnanın sadece bir kez günlüğe kaydedilmesi gerektiğini ekleyeceğim .
Ayrıca, yazdıklarınız bir API / Framework ise listelediğim adımlar farklı olabilir . Orada, geliştiricilerin hatalarını anlamalarına yardımcı olmak için iyi tasarlanmış istisnalar atmak zorunludur.
İstisnaları test etmek için, sahte nesneleri kullanarak, sınıflarınızın "bir şeyi yapmak için bir sınıf" en iyi uygulamalarına saygı göstermesi koşuluyla, istisna olsun ya da olmasın neredeyse her şeyi test edebilmelisiniz. Ben de şahsen en önemli ama gizli yöntemleri "özel" yerine "korumalı" olarak işaretlediğinizden emin olun, böylece onları çok fazla uğraşmadan test edebiliyorum. Bunun dışında, istisnaları test etmek basittir, sadece istisnayı kışkırtır ve bir istisnayı yakalayarak "bekle". Bir istisna almazsanız, birim test durumu hatasıyla karşılaşırsınız.