Başvurumdaki istisnaların nasıl ele alınacağına karar vermede takılı kaldım.
İstisnalarla ilgili sorunlarım 1) uzak bir hizmet aracılığıyla verilere erişmekten veya 2) bir JSON nesnesinin serisini kaldırmadan kaynaklanıyorsa. Maalesef bu görevlerden herhangi birinin başarısını garanti edemiyorum (ağ bağlantısını kes, kontrolüm dışında olan hatalı biçimlendirilmiş JSON nesnesi).
Sonuç olarak, bir istisna ile karşılaşırsam, onu işlev içinde yakalarım ve arayan kişiye FALSE döndürürüm. Benim mantığım, arayanın gerçekten ilgilendiği tek şey, görevin başarılı olup olmadığı, neden başarılı olmadığı değil.
İşte tipik bir yöntemin bazı örnek kodları (JAVA'da))
public boolean doSomething(Object p_somthingToDoOn)
{
boolean result = false;
try{
// if dirty object then clean
doactualStuffOnObject(p_jsonObject);
//assume success (no exception thrown)
result = true;
}
catch(Exception Ex)
{
//don't care about exceptions
Ex.printStackTrace();
}
return result;
}
Bu yaklaşımın iyi olduğunu düşünüyorum, ancak istisnaları yönetmek için en iyi uygulamaların ne olduğunu gerçekten merak ediyorum (gerçekten bir istisnayı bir çağrı yığınına kadar tüm yol boyunca şişirmeli miyim?).
Anahtar soruların özeti olarak:
- İstisnaları yakalamak, ancak onları şişirmek veya sistemi resmi olarak bilgilendirmek (bir günlük veya kullanıcıya bildirim yoluyla) doğru mudur?
- Bir dene / yakala bloğu gerektiren her şeyle sonuçlanmayan istisnalar için hangi en iyi uygulamalar var?
Takip Et / Düzenle
Tüm geri bildirimler için teşekkürler, çevrimiçi istisna yönetimiyle ilgili bazı mükemmel kaynaklar bulduk:
- Özel Durum İşleme için En İyi Uygulamalar | O'Reilly Media
- .NET'te Özel Durum İşleme En İyi Uygulamaları
- En İyi Uygulamalar: İstisna Yönetimi (makale artık archive.org kopyasına işaret ediyor)
- İstisna Karşılayan Antipatternler
Görünüşe göre istisna yönetimi, bağlama göre değişen şeylerden biri. Ancak en önemlisi, bir sistem içindeki istisnaları nasıl yönettikleri konusunda tutarlı olmalıdır.
Ek olarak, aşırı deneme / yakalama yoluyla kod çürümesine dikkat edin veya bir istisnaya saygı göstermeyin (bir istisna sistemi uyarmaktır, başka ne uyarılması gerekir?).
Ayrıca, bu m3rLinEz'den güzel bir seçim yorumu .
Anders Hejlsberg'e ve sizinle aynı fikirdeyim ki, en çok arayan kişi sadece ameliyatın başarılı olup olmadığını önemsiyor.
Bu yorumdan, istisnalarla uğraşırken üzerinde düşünülmesi gereken bazı sorular ortaya çıkıyor:
- Bu istisnanın ortaya çıktığı nokta nedir?
- Bununla başa çıkmak nasıl mantıklı?
- Arayan kişi istisnayı gerçekten önemsiyor mu yoksa sadece aramanın başarılı olup olmadığını mı önemsiyor?
- Bir arayanı potansiyel bir istisnayı yönetmeye zorlamak zarif mi?
- Dilin putlarına saygı duyuyor musunuz?
- Boolean gibi bir başarı bayrağı döndürmeniz gerçekten gerekiyor mu? Boolean (veya int) döndürmek, Java'dan çok C zihniyetidir (Java'da sadece istisnayı halledersiniz).
- Dille ilgili hata yönetimi yapılarını izleyin :)!