Bu soruyla ilgili olarak, bir istisnanın mümkün olan en yüksek noktaya nasıl yakınlaştırılması gerektiği konusundaki tavsiyeleri okudum .
En iyi uygulamadaki ikilemim bir kişinin enum (veya değeri temsil eden bir int, hata için 0, tamam için 1, uyarı için 2 vb.) Duruma göre döndürmek için bir dene / yakala / son kullanması gerekip gerekmediğidir . bir cevap her zaman sırayladır, yoksa çağrılan bölümün onunla başa çıkması için istisnanın geçmesine izin verilmeli midir?
Toplayabildiğim kadarıyla, bu duruma bağlı olarak farklı olabilir, bu yüzden orijinal tavsiye garip görünüyor.
Örneğin, bir web hizmetinde, her zaman bir durum döndürmek istersiniz, bu nedenle herhangi bir istisna yerinde ele alınmalıdır, ancak http aracılığıyla bazı verileri gönderen / alan bir fonksiyonun içinde şunu söyleyelim: (örneğin 404 olması durumunda) sadece onu tetikleyene geçmek için istisna. Bunu yapmazsanız, sonucun niteliğini (hata: 404) ve sonucun kendisini bilgilendirmek için bir yol oluşturmanız gerekir.
Verileri alan / yayınlayan yardımcı fonksiyon içindeki 404 istisnasını yakalamak mümkün olsa da, öyle değil mi? Programdaki durumları belirtmek (ve elbette uygun şekilde belgelemek) için bir smallint kullanan ve daha sonra bu bilgiyi dışarıdaki akıl sağlığı doğrulama amaçları için (her şey tamam / hata işleme) kullanmak mı?
Güncelleme: Ana sınıflandırma için ölümcül / ölümcül olmayan bir istisna bekliyordum, ancak cevaplara halel getirmemek için bunu dahil etmek istemedim. Sorunun ne hakkında olduğunu açıklığa kavuşturalım: İstisnaları değil, atılan istisnaları ele almak. İstenen efekt nedir: Bir hata tespit edin ve ondan kurtarmaya çalışın. Kurtarma mümkün değilse, en anlamlı geri bildirimi sağlayın.
Yine, http get / post örneğinde, asıl arayan kişiye ne olduğunu açıklayan yeni bir nesne sağlamalısınız? Bu yardımcı kullandığınız bir kütüphanedeyse, işlem için bir durum kodu vermesini bekler misiniz, yoksa bir try-catch bloğuna dahil eder misiniz? Eğer tasarlıyorsanız , bir durum kodu verir misiniz veya bir istisna atar ve üst seviyenin bunu bir durum koduna / mesaja çevirmesine izin verir misiniz?
Özet: İstisna üretmek yerine bir kod parçası bir durum kodu döndürürse, bunun getirebileceği sonuçlarla birlikte nasıl seçersiniz?