Bu konuları böylesine derinlemesine anlatan ve farklı senaryolar ile elinden geldiğince örneklemeye çalışan bir eğitmenin videolarını izlemek gerçekten mükemmel. Emeğiniz karşılıksız kalmasın hocam.
Hmm yani en son yazdığımız boş exception parametresi, catch(Exception ex) bir nevi if-else koşul yapılanmasının else'i gibi. Yani en kötü ihtimalde çalışacak olan bloktur. Art arda açtığımız catch blokları ise if, else if, else if, else if gibi çalışıyor denilebilir. :)
Hocam bu durumda bölme hatasını kontrol edip Mainden çıkıyor ve format hatasına bakma fırsatı olmuyor. Her ikisini de nasıl kontrol edebiliriz? try { int a = 10, b = 0; int sonuc = a / b; int.Parse("sdasd"); } catch (DivideByZeroException ex) { Console.WriteLine("Hatanız: " + ex.Message); } catch(FormatException ex) { Console.WriteLine("Hatanız: " + ex.Message); } catch(Exception ex) { Console.WriteLine("Hatanız: " + ex.Message); }
3 ปีที่แล้ว +6
İlk hangisinde patlıyorsa kod orada sonlanır ve ilgili catch'e düşer. Diğer olası hata olan kod artık try'da kaldığı için işlenemez.
int.parse şeklinde tanımladım ama hata vermiyor sıfıra bölünme denklemini sildikten sonra format hatası veriyor silmezsem sadece sıfıra bölme hatası alıyorum format hatası çalışmıyor neden acaba (keşke sizde kodu çalıştırsaydınız aynı hatayı alacakmıydınız görmüş olurduk cevap verirseniz sevinirim)
hocam şöyle kısa bir deneme yaptım fakat try catch olmasına rağmen runtime hatası aldım. int k = 1, j = 0; object k1 = null; try { Console.WriteLine(k1.ToString()); } catch (Exception ex) { Console.WriteLine(ex.Message); } sizce neden olabilir?
Hocam ben şey soracaktm. try içerisine birden fazla hata durumu olan kodlar yazsam ve catc bloğunda bunları çağırsam hangi hata gelecek? Yani örneğin ben try içerisindeki koda önce DivideByZeroException hatasını tetikleyen bir kod yazdım sonra da FormatException hatasını tetkileyen bir kod yazdım. Bu durumda ayrı ayrı catc blakları açtım ve 2 ihtimali de belirttim. Lakin sadece 1 ihtimali ekrana yazdırdı. Neden öyle oldu. CEVAPLARSANIZ ÇOK SEVİNİRİM TEŞEKKÜRLER...
1.30 ve 9.30 dakikalarında sorunu açıklıyor istersen tekrar bir göz at. Benim anladığım ise farklı türdeki hata yapılarında farklı bir işlem(algoritma, çözüm, uyarı mesajı vb.) yapmamızı sağlıyor. Bu yüzden birden fazla catch bloğuna ihtiyaç duyuyoruz.
kullanıcıya nerede hata yaptığını belirtip ona göre düzeltme yapmasını isteyebilelim diye yoksa kullanıc diyecek ki nesi yanlış da hata veriyor program
Hocam ben böyle bir kod yazdım. Konsolda yalnızca DivideByZeroException hatasını gösteriyor bana. Sanırım önce yakaladığını gösteriyor. Ancak diğerinin yani FormatException hatasının da gösterilmesini istiyorum. Bir yolu var mıdır? try { int a = 10, b = 0; int c = a / b; Console.WriteLine(c); int x = int.Parse("Merhaba"); } catch (DivideByZeroException hata) //catch'in kontrol ettiği hata türünü özellikle DivideByZeroException olarak belirledim. Zira aradığım hata o. { Console.WriteLine("İlk hatanız: " + hata.Message); } catch (FormatException hata2) //Bu yeni parametre ise ikinci hataya özel düzenlenmiştir. Yani FormatException hatası alındığında tetiklenecektir. { Console.WriteLine("İkinci hatanız: " + hata2.Message); } catch(Exception ex) { Console.WriteLine("Farklı bir hata tespit edildi." + ex.Message); }
Bir hata durumu yasandiginda o hata cozulmeden programin calismaya devam etmesini istemezsin. Bundan dolayi ilk hatayi aldiktan sonra programin calismaya devam edip ikinci hatayi vermesi mantiksiz olacaktir.
Sıkılmadan usanmadan yazarım vallahi her videonun altına , süper bir anlatım. Hakkınız ödenmez
Bu konuları böylesine derinlemesine anlatan ve farklı senaryolar ile elinden geldiğince örneklemeye çalışan bir eğitmenin videolarını izlemek gerçekten mükemmel. Emeğiniz karşılıksız kalmasın hocam.
Allah razı olsun hocam emeğiniiiize sağlık..180
Anlatımınız mükemmel teşekkür ederim hocam
Bu bir destek mesajıdır.
emeginize saglik
07.09.2022 izledim. 180) try - catch Birden Çok Catch Durumu
helal olsn abi enerjin bol olsun
Teşekkürler hocam
09.03.2024 eğitime devam. Teşekkür ederim. :)
Hmm yani en son yazdığımız boş exception parametresi, catch(Exception ex) bir nevi if-else koşul yapılanmasının else'i gibi. Yani en kötü ihtimalde çalışacak olan bloktur. Art arda açtığımız catch blokları ise if, else if, else if, else if gibi çalışıyor denilebilir. :)
izlendi ✔
üstadım ben şöyle planladım:
try
{
int s1 = 2, s2 = 0;
int a = s1 / s2;
int.Parse("45454");
}
catch (Exception ex)
{
switch (ex)
{
case FormatException:
Console.WriteLine("format hatası");
break;
case DivideByZeroException:
Console.WriteLine("Sıfıra bölme hatası");
break;
_:
Console.WriteLine("Tanımsız hata: " + ex.Message);
break;
}
}
burada bir mantık hatası var mı?
Hocam bu durumda bölme hatasını kontrol edip Mainden çıkıyor ve format hatasına bakma fırsatı olmuyor. Her ikisini de nasıl kontrol edebiliriz?
try
{
int a = 10, b = 0;
int sonuc = a / b;
int.Parse("sdasd");
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Hatanız: " + ex.Message);
}
catch(FormatException ex)
{
Console.WriteLine("Hatanız: " + ex.Message);
}
catch(Exception ex)
{
Console.WriteLine("Hatanız: " + ex.Message);
}
İlk hangisinde patlıyorsa kod orada sonlanır ve ilgili catch'e düşer. Diğer olası hata olan kod artık try'da kaldığı için işlenemez.
hocam vstudio 2022 de try catch yaptıgımda ayrıyeten throw diye bir şey ekliyor onun görevi nedir
int.parse şeklinde tanımladım ama hata vermiyor sıfıra bölünme denklemini sildikten sonra format hatası veriyor silmezsem sadece sıfıra bölme hatası alıyorum format hatası çalışmıyor neden acaba (keşke sizde kodu çalıştırsaydınız aynı hatayı alacakmıydınız görmüş olurduk cevap verirseniz sevinirim)
hocam şöyle kısa bir deneme yaptım fakat try catch olmasına rağmen runtime hatası aldım.
int k = 1, j = 0;
object k1 = null;
try
{
Console.WriteLine(k1.ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
sizce neden olabilir?
bence objectte olmamasının sebebi : object olarak tanımladığımız zaman türe özgü işlemlerini kullanamadığımızdan dolayıdır
Hocam ben şey soracaktm. try içerisine birden fazla hata durumu olan kodlar yazsam ve catc bloğunda bunları çağırsam hangi hata gelecek? Yani örneğin ben try içerisindeki koda önce DivideByZeroException hatasını tetikleyen bir kod yazdım sonra da FormatException hatasını tetkileyen bir kod yazdım. Bu durumda ayrı ayrı catc blakları açtım ve 2 ihtimali de belirttim. Lakin sadece 1 ihtimali ekrana yazdırdı. Neden öyle oldu. CEVAPLARSANIZ ÇOK SEVİNİRİM TEŞEKKÜRLER...
hata olunca, try içindeki akış biter, kodun devamı okunmaz ve catch blokları çalışır. bu yüzden ilk karşılaştığın hata ile ilgili mesaj kodu alırsın.
Hocam madem Exception tüm hataları karşılayabiliyor neden ihtimalleri de özelleştiriyoruz ? Sadece onu yazsak tümü için yeterli olmaz mı ?
1.30 ve 9.30 dakikalarında sorunu açıklıyor istersen tekrar bir göz at. Benim anladığım ise farklı türdeki hata yapılarında farklı bir işlem(algoritma, çözüm, uyarı mesajı vb.) yapmamızı sağlıyor. Bu yüzden birden fazla catch bloğuna ihtiyaç duyuyoruz.
@@hsntpl aynen oyle
kullanıcıya nerede hata yaptığını belirtip ona göre düzeltme yapmasını isteyebilelim diye yoksa kullanıc diyecek ki nesi yanlış da hata veriyor program
Hocam ben böyle bir kod yazdım. Konsolda yalnızca DivideByZeroException hatasını gösteriyor bana. Sanırım önce yakaladığını gösteriyor. Ancak diğerinin yani FormatException hatasının da gösterilmesini istiyorum. Bir yolu var mıdır?
try
{
int a = 10, b = 0;
int c = a / b;
Console.WriteLine(c);
int x = int.Parse("Merhaba");
}
catch (DivideByZeroException hata) //catch'in kontrol ettiği hata türünü özellikle DivideByZeroException olarak belirledim. Zira aradığım hata o.
{
Console.WriteLine("İlk hatanız: " + hata.Message);
}
catch (FormatException hata2) //Bu yeni parametre ise ikinci hataya özel düzenlenmiştir. Yani FormatException hatası alındığında tetiklenecektir.
{
Console.WriteLine("İkinci hatanız: " + hata2.Message);
}
catch(Exception ex)
{
Console.WriteLine("Farklı bir hata tespit edildi." + ex.Message);
}
Bir hata durumu yasandiginda o hata cozulmeden programin calismaya devam etmesini istemezsin. Bundan dolayi ilk hatayi aldiktan sonra programin calismaya devam edip ikinci hatayi vermesi mantiksiz olacaktir.
Hocam throw'a da değinseydiniz keske...
Zamanı var.
@ anladım ;)
Anlatımınız mükemmel teşekkür ederim hocam