C# ile programa nasıl hata mesajı verilir

ismooo

Katılımcı Üye
19 Ocak 2009
272
4
uzay
c# ile küçük bir program yaptım programın amacı sigorta şirketlerinde poliçe yenilemesi yaparken enflasyonlu fiyatı hızlı şekilde hesaplamak üzerine

resimdeki gibi eski teminat bedeli textlerinden biri veya daha fazlası boş olursa resimdeki hatayı alıyorum bu hata yerine benim belirlediğim hata mesajı yazsın isityorum nasıl yapabilirim

kr7psbt.png
 

Grimner

Adanmış Üye
28 Mar 2020
6,312
4,770
C#:
try
{
    // Hata oluşabilecek kısım
}
catch (Exception ex)
{
    MessageBox.Show("Bir hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Bu şekilde aldığınız hataları kullanıcıya sunabilirsiniz.
Hocam kendi belirlediğim yazıyor ya.. Sizin kodunuz direkt sistemin verdiği hatayı yazdırır...

Aşağıda verdiğim şekilde yapabilirsiniz.

C#:
if (textBox1.text.Trim() == "")
{
    MessageBox.Show("Bu kısmı boş bırakamazsınız", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
    // Bu kısma yapılacak işlemi ekleyin, ifler kontrol sağlayacağından boş ise çalışmayacak. Yani hata da çıkmayacaktır.
    // Tabi farklı bir durumdan kaynaklanan hata oluşabilir. Onun içinde bir koşul eklemek gerekebilir.
}
 

BeoWulf007

Kıdemli Üye
19 Haz 2013
2,762
507
24
Praise The Fool
Muhtemelen String'i boş geçtiğin için Convert işleminde patlıyor. Bu hata zaten bilinçli bir uyarı değil, ele alınmayan bir durum. Bu hata olmaması istiyorsan o textbox'ları nerede convert ediyorsan Kruvazör'ün yazdığı Try Catch yapılanmasını orada kullan.

Hocam kendi belirlediğim yazıyor ya.. Sizin kodunuz direkt sistemin verdiği hatayı yazdırır...

Aşağıda verdiğim şekilde yapabilirsiniz.

C#:
if (textBox1.text.Trim() == "")
{
    MessageBox.Show("Bu kısmı boş bırakamazsınız", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
    // Bu kısma yapılacak işlemi ekleyin, ifler kontrol sağlayacağından boş ise çalışmayacak. Yani hata da çıkmayacaktır.
    // Tabi farklı bir durumdan kaynaklanan hata oluşabilir. Onun içinde bir koşul eklemek gerekebilir.
}
Yani.. aynı şey sayılır bence, he input kontrolü yapmışsın ha exception yakalamışsın. if mi switch mi farkı kadar farklı.
 

Kruvazör

Ar-Ge Ekibi Lideri
28 Mar 2020
1,740
2,557
Wrong Side Of Heaven
Hocam kendi belirlediğim yazıyor ya.. Sizin kodunuz direkt sistemin verdiği hatayı yazdırır...

Aşağıda verdiğim şekilde yapabilirsiniz.

C#:
if (textBox1.text.Trim() == "")
{
    MessageBox.Show("Bu kısmı boş bırakamazsınız", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
    // Bu kısma yapılacak işlemi ekleyin, ifler kontrol sağlayacağından boş ise çalışmayacak. Yani hata da çıkmayacaktır.
    // Tabi farklı bir durumdan kaynaklanan hata oluşabilir. Onun içinde bir koşul eklemek gerekebilir.
}
Şimdi şöyle.
Temelde aynı şeyi yakalamışız ama şöyle bir durum var. Teker teker tüm txtboxlara aynı if şartını girmek yerine hepsini try catch içine alıp kod kalabalığından kurtulabilir diye düşündüm.
 

BeoWulf007

Kıdemli Üye
19 Haz 2013
2,762
507
24
Praise The Fool
Şimdi şöyle.
Temelde aynı şeyi yakalamışız ama şöyle bir durum var. Teker teker tüm txtboxlara aynı if şartını girmek yerine hepsini try catch içine alıp kod kalabalığından kurtulabilir diye düşündüm.
Seni de düzeltip adilik yapayım mı :poop: :ROFLMAO: Form Controls'dan hepsine tek kodla ulaşıp if ile kontrol etmek daha performanslı olabilir ve kod kalabalığı da yapmaz.(ve veya tüm texbox'ları listede tutabilir, panel içine alabilirsin vs..) Aranıza kara kedi gibi girdim :ROFLMAO::devilish: Şahsi tercihim Try Catch'den olabildiğince kaçınmak olurdu. Çok bir performans farkı olmasa da var.
 

Kruvazör

Ar-Ge Ekibi Lideri
28 Mar 2020
1,740
2,557
Wrong Side Of Heaven
Seni de düzeltip adilik yapayım mı :poop: :ROFLMAO: Form Controls'dan hepsine tek kodla ulaşıp if ile kontrol etmek daha performanslı olabilir ve kod kalabalığı da yapmaz.(ve veya tüm texbox'ları listede tutabilir, panel içine alabilirsin vs..) Aranıza kara kedi gibi girdim :ROFLMAO::devilish: Şahsi tercihim Try Catch'den olabildiğince kaçınmak olurdu. Çok bir performans farkı olmasa da var.
O halde iyice pisleşelim :D
Böyle tek formdan oluşan epey ufak (işlem bakımından) projelerde performans farkı gözle görülemeyecek kadar az olacağı için keyfinin kâhyâsı nasıl isterse öyle yazabilir :D
 

BeoWulf007

Kıdemli Üye
19 Haz 2013
2,762
507
24
Praise The Fool
herkese teşekkürler ben yazılıma yeni başladım çok bilmiyorum

C#:
public bool CheckTextBoxesNullOrEmpty()
{
    foreach (Control control in this.Controls)
    {
        if (control is TextBox)
        {
            if (String.IsNullOrEmpty(control.Text))
            {
                control.BackColor = Color.Red;
            }
            else
            {
                control.BackColor = Color.White;
            }
        }
    }

    return false;
}


//kodun bu kısmını
private void button1_Click(object sender, EventArgs e)
{
   //daha doğrusu bu if kısmını, kendi hesapla butonunun içine yaz.
    if (CheckTextBoxesNullOrEmpty())
    {
        MessageBox.Show("Hiçbir kutucuğu boş geçemezsin!");
        return;
    }
}
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.