Hala aşağı mı kaydırıyorsunuz? Hadi bakalım!
Bu soru bana bir süre önce zor zamanlar verdi.
try
{
int a=1;
int b=0;
int c=a/b;
}
catch(Exception ex)
{
console.writeline(ex.Message);
}
finally
{
console.writeline("Finally block");
}
console.writeline("After finally");
yukarıdaki senaryoda ne basılacaktır? Evet doğru tahmin ettim:
ör. mesaj - her neyse (muhtemelen sıfıra bölme girişiminde bulunuldu)
Sonunda engelle
Sonunda sonra
try
{
int a=1;
int b=0;
int c=a/b;
}
catch(Exception ex)
{
throw(ex);
}
finally
{
console.writeline("Finally block");
}
console.writeline("After finally");
Bu neyi yazdırır? Hiçbir şey değil! Catch bloğu bir hata ortaya çıkardığı için bir hata atar.
İyi bir programlama yapısında, bu kodun başka bir katmandan ele alınması anlamında istisnalarınız aktarılır. Böyle bir durumu uyarmak için iç içe geçeceğim bu kodu deneyeceğim.
try
{
try
{
int a=1;
int b=0;
int c=a/b;
}
catch(Exception ex)
{
throw(ex);
}
finally
{
console.writeline("Finally block")
}
console.writeline("After finally");
}
catch(Exception ex)
{
console.writeline(ex.Message);
}
Bu durumda çıktı şöyle olacaktır:
- Sonunda engelle
- ör. mesaj - her neyse.
Bir istisna yakalayıp diğer katmanlara tekrar attığınızda (Huni oluşturma), fırlatma sonrası kodun çalıştırılmayacağı açıktır. Bir işlevin içindeki dönüşün nasıl çalıştığına benzer şekilde davranır.
Artık catch bloğundan sonra kaynaklarınızı neden kapatmayacağınızı biliyorsunuz. Nihayet bloğuna yerleştirin.