Şimdi Ara

c# throw u anlamadım, yardım eder misin?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
5
Cevap
0
Favori
855
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj

  • 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 >







  • 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.




  • anladım, sağ ol üstat
  • 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ı >
  • hyrgul H kullanıcısına yanıt
    anladım üstat, sağ olasın
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.