Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
933
Tıklama
0
Öne Çıkarma
c# throw u anlamadım, yardım eder misin?
D
8 yıl
Yüzbaşı
Konu Sahibi


using System;
class Sayilar
{
private int mDeger;

public Sayilar(int mDeger)
{
if (mDeger > 100)
{
throw new OverflowException("değer 100'den kbüyk olamaz"); // burada throw
}
else
{
this.mDeger = mDeger;
}
}
public int Deger
{
get
{
return mDeger;
}
set
{
if (value>100)
{
throw new OverflowException("değer 100 'den büyük olamaz"); //buradaki throw

}
else
{
this.mDeger = value;
}
}
}

}
class exceptiontest

{

static void Main(string[] args)
{

try
{
Sayilar s = new Sayilar(500);
}
catch (OverflowException excp)
{
Console.WriteLine(excp.Message);
}
}

}

kod bu arkadaşlar buradaki throw ne işe yarıyor
not : internetten araştırdım ama sürekli olarak try-catch üzerinden anlatılmış sanki try-catch özelmiş gibi anlatmışlar hep ama bu kodda try-catch dışında kullanılmış, bu kodu ve throw'u açıklayabilir misiniz





< Bu mesaj bu kişi tarafından değiştirildi deniz caliskan -- 6 Temmuz 2017; 12:2:59 >

V
8 yıl
Binbaşı

exception firlatiyor yani pek ozel bir yani yok. o koda ihtiyacin yok hatta programin basladigi metodun ilk satirina throw new Exception("bir seyler"); seklinde yaz calistir. debug modundaysan debugger kodu durdurur ve exception'i gosterir sana ve ekranda "bir seyler" diye aciklama yazar.

mesela diyelim KareKokunuAl diye bir int parametreli bir metod olusturdun ve negatif sayi girildiginde bir exception firlattin. eger baska bir yerde bu metodu cagirirken try icine koyarsan, bu exception'i yakalar ilgili catch blogunda.

tam neyi sordugunu anlamadim yani exception firlatiyor sen kodda baska hatalarla karsilasiyorsun o da aynisi ama sen verdiriyorsun hatayi.

bir de return gerektiren metodlarda return etmedigin durumlarda throw yaparsan o da bir fonksiyon kapatici gorevi gorur mesela:

int iki(bool hataVerme) 
{
if(hataVerme)
return 2;
}

bu hata verir. "not all code paths return a value" gibi bir hata verir. runtimeda degil tabii yazarken gorursun error list'te.
ama:
int iki(bool hataVerme) 
{
if(hataVerme)
return 2;
else
throw new Exception("hata ver dedin verdim");
}

bu oyle bir hata vermez cunku iki durumda da bir sekilde fonksiyon bitiyor. biri basarili sekilde deger dondururken digeri hata veriyor ama sonucta fonksiyonun isi bitiyor orada.


Bu mesaja 1 cevap geldi.
D
8 yıl
Yüzbaşı
Konu Sahibi

anladım, sağ ol üstat




Bu mesajda bahsedilenler: @Microsoft Specialist
H
8 yıl
Yüzbaşı

Yazdığımız kodlarda hataya sebep olabilecek istisnai durumları göz önünde bulundurarak hatayı throw ile fırlatıyoruz. Niye biz hatayı if ile falan ekrana yazmıyoruz derseniz, esneklik sağlamak için derim. Şöyleki: Bizim sınıfımızı kullanacak kişiler hatayı bizimki gibi göstermek istemeyebilirler. Onlar belki daha farklı bir şekilde bu işi yapacaklar. Onlara biz hatayı gönderiyoruz sen nasıl istersen o şekilde işle diyoruz aslında. Bilmem anlatabildim mi?



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
D
8 yıl
Yüzbaşı
Konu Sahibi

anladım üstat, sağ olasın




Bu mesajda bahsedilenler: @hyrgul
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.