BTP205 – Görsel Programlama I Hata Ayıklama (Debugging)
Bugün… Hata Ayıklama ve Hatalarla başa çıkma Debugging feature in Visual Studio try … catch … finally
Hata Ayıklama ve Hatalarla başa çıkma
Hata Tipleri Sözdizimi hataları (Syntax Errors) Noktalı virgülü unutmak, parantezi kapatmamak, veya değişkenleri yanlış isimlendirmek, vb. Program derlenmez Derlem hatalarını düzeltin Mantık hataları (Logical Errors) Program derlenir Program beklenen/istenen çıktıyı vermez Programızındaki hataları tespit edip ayıklayın!
Visual Studio ile Hata Ayıklama Kodun içine breakpoints yerleştirmek F9, click at the beginning of a line, Debug menu Programınızı Debug mode başlatmak F5 (not Ctrl-F5), Play arrow in toolbar, Debug menu Tek adım için F10 tuşuna basınız Fonksiyonun içine girmek için F11 tuşuna basınız Sonlandırmak için Shift-F5 veya Stop toolbar
Visual Studio Debugging Tips and Tricks Şu videoları izleyebilirsiniz http://www.youtube.com/watch?v=I79vz1nid_Q http://www.youtube.com/watch?v=GPnTiFxkn9Y
Değişken İçeriklerini Görmek Move cursor an a variable while program is being debugged Follow the variables in the Locals and Autos windows Add variables into the Watch windows Use the Immediate Window Write the name of the variable and press Enter You can call functions and expressions too
Konfigürasyonlar Debug Release Extra symbols are included in the executable file so that it can be debugged Yavaş çalışır Çalıştırılabilir dosya boyutu büyüktür Release Daha hızlı çalışır Çalıştırılabilir dosya boyutu küçüktür Use this configuration on the last build (before distributing your program)
Özel program kullanmadan hata ayıklama Visual Studio gibi bir araç hata ayıklamanızı kolaylaştırır Eğer IDE yosa, Console.WriteLine() komutunu kullanabilirsiniz Değişkenlerin değerlerini ekrana yazdırmak ya da anlamlı mesajları ekrana yazdırmak için Tabiki bu ekrana basan satırları en sonunda silmeyi unutmayın.
Debugging in Nonbreaking (Normal) Mode Console.WriteLine("MyFunc() fonksiyonu çalıştırılmak üzere..."); MyFunc(”Bir şeyler yap."); Console.WriteLine("MyFunc() fonksiyonun çalışması sona erdi.");
Error Handling (try..catch..finally) Programı IDE içinden çalışıtırırken hata olursa hata mesajı alırısınız Ancak programızı Release modunda çalıştırırsanız, hata programın sonlanmasına neden olur. Bu durumlar için istisnaları yakalamayı tercih edebilirsiniz. exception handling (try..catch..finally)
Try bloğunun kısımları try: istisna olaması beklenen kod, try içine alınır. catch: Hata oluşursa çalışacak olan kısım. finally: Hata oluşsun ya da oluşmasın çalışan kısımdır. Mutlaka çalışması garantidir.
try Örneği int number = int.Parse(Console.ReadLine()); int result = 100 / number; string str = result.ToString(); Eğer sayı 0 değerini alırsa hata olur! Metin değerinden sayı elde ederken hata olabilir!
try Örneği – Çözüm 1 try { int number = int.Parse(Console.ReadLine()); int result = 100 / number; string str = result.ToString(); } catch { Console.WriteLine(“Bir hata oluştu!”); }
try Örneği – Çözüm 2 try { int number = int.Parse(Console.ReadLine()); int result = 100 / number; string str = result.ToString(); } catch (ArgumentException ex1){ Console.WriteLine(“An ArgumentException error occurred!”); } catch (DivideByZeroException ex2) { Console.WriteLine(“The divisor can’t be zero”); } catch (Exception ex) { Console.WriteLine(“An unspecified error occurred. The details is: ” + ex.Message); }
try Örneği – Çözüm 3 int result = 0; string strResult; try { int number = int.Parse(Console.ReadLine()); result = 100 / number; } catch (Exception ex) { Console.WriteLine(“Tanımlanamayan bir hata oluştu. Ayrıntılar : ” + ex.Message); } finally { strResult = result.ToString(); }
Veritabanı İşlemlerinde try Örneği try { … // Veritabanına bağlan … // Veritabanında birtakım işlemleri gerçekleştir } catch { … // Error handling statements } finally { … // Veritabanı bağlantısını kapat }