C# Çalışma Zamanı Hataları

Muhammet Ali
9 Haziran 2015 Salı
0

Hatalar her zaman derleme esnasında bulunmazlar. Bazen kodlar, sözdizimi ve derleyici hatası almayacak şekilde doğru yazıldığı halde çalışırken koşullara göre hata verebilirler.

Bu durumu şu örnekle açıklayabiliriz: Bir araba şirketi araba üretir ve müşterilere satar. Arabaların üretim bandından sorunsuz ve çalışır olarak çıkması, günlük hayatta bu arabaların her zaman çalışacağı anlamına gelir mi? Tabi ki gelmez. Peki, hangi sorunlar yaşanabilir?

   Müşterilerden biri arabaya benzin yerine çay koyarsa araba çalışmayacaktır.

   Müşterilerden biri arabayı suyun içerisinde kullanmaya çalışırsa araba çalışmayacaktır.  Hava sıcaklığı -40 dereceye düşerse araba çalışmayacaktır.

   Arabanın yedek parçaya ihtiyacı olduğu zaman, satış kataloğunda adresi verilen yedek parça dükkânı yerinde yoksa araba çalışmayacaktır.

Daha bu gibi birçok problem sayılabilir. Bu sorunların benzeri de yazdığınız uygulamalarda sizin başınıza gelebilir.

   Kullanıcı tarih girmesi gereken bir TextBox’a rakam yazabilir.

   Microsoft Office için yazdığınız bir eklenti, Office olmayan bir bilgisayarda çalıştırılmaya çalışılabilir.

                (RAM) olmayabilir.Uygulamanın çalıştığı bilgisayarda bir işlem için yeterli bellek

   İnternet üzerinden Merkez Bankası’ndan döviz kuru çektiğiniz bir uygulamada Merkez Bankası’nın sunucusu o an için çalışmıyor olabilir.

 

Bu tip hatalara “Çalışma Zamanı Hatası” denir. Çalışma zamanı hataları, uygulamaların hatasız bir  şekilde çalıştığı koşullardan daha farklı koşulların meydana gelmesiyle oluşur.

enlightenedNet Framework, çalışma zamanı hatalarını, her zaman değil sadece istisnai durumlarda oluştuğu için “exception” (istisna) olarak adlandırılır.                   

 

Uygulamayı çalıştıran kullanıcılar, çalışma zamanı hatası oluştuğunda Şekildeki pencereyi görürler. 

Bu mesajda sadece hatanın kaba bir tanımı bulunmaktadır. Şekildeki örnekte hata için sadece “Input string was not in a correct format” (Girilen yazı doğru biçimde değil) tanımı verilmektedir. Bu hatanın hangi satırda olduğu, hatanın daha detaylı bir açıklaması gibi bilgiler yoktur. Details (Detay) düğmesine tıklanırsa çok karışık, kullanıcıların, hatta yazılımcıların, hiçbir şey anlamayacağı yazılar ortaya çıkar.

Böyle bir hata mesajını kullanıcının görmesi, istenmeyen bir durumdur. Bu ekran yerine kullanıcıya, gayet anlaşılır bir şekilde “Lütfen geçerli bir tarih giriniz” gibi bir mesaj gösterilebilir.

Kullanıcının gördüğü bu sevimsiz pencere neyse ki sadece uygulama, ilgili exe dosyası üzerinden çalıştırıldığında görülür. Visual Studio’da proje üzerinde çalışılırken aynı hata daha farklı bir pencere ile gösterilir.

Şekilde de görüldüğü üzere bu pencere daha yazılımcı dostudur. Hata olan satır sarı renk ile işaretlenir. Hata penceresinin en üstünde hata mesajı yer alır. Troubleshooting tips yazan alanda ise bu hatanın muhtemel çözümleri yer alır. Bu çözümlerden birine tıklanıldığında o hata ilgili MSDN sayfası açılır.Ancak hatanın bilinmesi tek başına bir çözüm sağlamaz. Örneğin bu senaryoda kullanıcının gir- diği veri sayıya dönüştürülebilir olmadığı için bu hata alınır. Bu sebepten ötürü kullanıcıdan veri alma kodu kaldırılamaz. Bu hatayı çözmek için çeşitli yöntemler uygulanabilir. Örneğin sadece rakam kabul eden bir TextBox kullanılabilir veya bu satıra gelmeden önce girilen değerin raka-ma dönüştürülüp dönüştürülmeyeceği kontrol edilebilir. Ancak örnekte verilen kod çok basit bir koddur. Çok daha karışık ve uzun bir kodda meydana gelebilecek aksaklıkların hepsi düşünülemeyebilir. Bu yüzden, hangi olasılıkta olursa olsun, bir hata oluştuğunda programı durdurmayıp, kullanıcıya anlaşılır bir şekilde hatayı anlatan, belki de hata oluştuğunda yazılımcının sonradan inceleyebilmesi için bir dosyaya bu hataları yazan veya hatayı e-posta olarak gönderen bir çözüme ihtiyaç olacaktır. Bu çözümün adı try..catch’dir. 

 

 

 

 

 

 



Yorum yaz