Hazırlamış olduğunuz sayfalarda veya formlarda kullanıcı kaynaklı, mantıksal veya sistemsel hatalar olabilir. Bu hataları yakalayıp kontrol altına almak hatanın sebebini tespit etmek önemlidir Asp.net’te hata kontrolü için Try Catch Finally yapısı kullanılır kullanım şekli
try { //Kodlar, hatayı bulduğumuz kısım } catch (HataSınıfıAdı x) { //hata durumunda işlenecek kodlar } Finally { //ne olursa olsun yapılacak işlemler.. İsteğe bağlı olup, olmaması.. }
şeklindedir hemen örnekler açıklayalım ListBox Kullanımı ile ilgili yaptığımız uygulada kullanıcı eğer listboxlardan eleman seçmeden işlem yapar ise programda hata oluşuyordu şimdi bu hataları gidermek için Try Catch Finally kullanarak programı düzenleyelim
tasarım kodlarımız
<asp:ListBox ID="ListBox1" runat="server" Height="113px" Width="161px"> <asp:ListItem>Programlama Temelleri</asp:ListItem> <asp:ListItem>Bilişim Tek. Tem.</asp:ListItem> <asp:ListItem>Grafik Animasyon</asp:ListItem> <asp:ListItem>Web Tasarım ve Prog</asp:ListItem> <asp:ListItem>Veritabanı Org.</asp:ListItem> <asp:ListItem>Temel Elktro</asp:ListItem> </asp:ListBox> <asp:Button ID="Button1" runat="server" Text="Ekle" onclick="Button1_Click" /> <asp:Button ID="Button2" runat="server" Text="Çıkar" onclick="Button2_Click" /> <asp:ListBox ID="ListBox2" runat="server" Height="113px" Width="160px"></asp:ListBox> <asp:Label ID="Label1" runat="server" ></asp:Label>
Şimdi butonları basıldığı zaman hata oluşmaması için try catch yapısını kullanacağız.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace kontroller { public partial class WebForm2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { Label1.Text = ""; try { ListBox2.Items.Add(ListBox1.SelectedItem.Text); } catch { Label1.Text = "Eklenecek Dersi Seçip Tekrar Deneyin"; } } protected void Button2_Click(object sender, EventArgs e) { Label1.Text = ""; try { ListBox2.Items.Remove(ListBox2.SelectedItem.Text); } catch { Label1.Text = "Silinecek Dersi Seçip Tekrar Deneyin"; } } } }
Başka bir örnek yapalım kullanıcı iki sayıyı toplamak için bir form tasarlıyor ama sayı yerine harf girilirse program da hata meydana gelecektir burada oluşan hatayı yakalamak için yine try catch kullanacağız.
kodlarımız
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace dortislem { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { try { int s1 = Convert.ToInt16(TextBox1.Text); int s2 = Convert.ToInt16(TextBox2.Text); Label3.Text = "Sonuç=" + (s1 + s2).ToString(); } catch { Label3.Text = "Sayıları kontrol edip tekrar deneyin"; } } } }