Originally Posted by
umit_ykoc
Sistem tanimlarindaki "hata penceresi" secili mi?
hocam "Hata Penceresi" checkbox'ı işareti kaldırılırsa hatalar oluşmaya devam eder, sadece görünmez.
Doktorlar bunu tavsiye etmiyorlar.Sürekli başağrısı büyük hastalıkların habercisi olabilirmiş.
Sistemde farkına varılmayan önemli yada önemsiz bir açık var, bu kesin.
Hatayı görmezden gelmeyip teşhise odaklanalım derim..
Her türlü hatanın teşhisini kolaylaştıracak bir yol bulalım önce.
İlk amacımız alınan hatanın hangi satırda yada hangi kod aralığında olduğunu net olarak tespit etmek olsun.
Hata aldığımız sistem kodları şöyle olsun;
PHP Code:
blabla1;
blabla2;
blabla3;
blabla4;
blabla5;
blabla6;
bunu şu şekle getirelim;
PHP Code:
try
{
blabla1;
blabla2;
blabla3;
blabla4;
blabla5;
blabla6;
}
catch (Exception ex)
{
}
Bu şekle getirdiğimiz zaman sanki "Hata Penceresi" checkbox'ı işaretsiz gibi çalışır ve hiç bir hata görünmez.
Bir aşama ileri götürelim şimdi. orjinal hatayı yakalayalım, orjinal hata ile birlikte kendi mesajımızı birleştirip yeni bir hata fırlatalım..
bu yeni hatayı kırmızı ekranda gördüğümüzde nereden kaynakladığını anlamamız daha kolay olacaktır.
PHP Code:
int asama=0;
try
{
blabla1;
blabla2;
asama=1;
blabla3;
blabla4;
asama=2;
blabla5;
blabla6;
}
catch (Exception ex)
{
throw new ArgumentException("Hata Bloğu: " + asama.ToString() + Environment.NewLine + Environment.NewLine + ex.Message);
}
Böylece asama=1; şeklindeki atamaları dilediğiniz sıklıkta yazarak hatanın yerini tespit edebilirsiniz.
Kırmızı ekranda şunu göreceksiniz:
"Hata Bloğu: 2
Daha önce gördüğünüz hata"
bunu gördüğünüzde hatanın "blabla5;" veya "blabla6;" satırında olduğunu anlarsınız çünkü "asama=2; " satırı başarılı çalışmış.
Bu yöntemin alternatifi bazı satırların başına // koyup kodu kapatıp sonra testler yapmak da olabilir.
Fakat bazen birbirine bağlı parçaları kapatmanız daha zor bir yöntem olabilir.
Yukarıdaki kalıp yöntemi robot olarak çalışan bir sistemi hiç etkilemeden kullanabilirsiniz.
Yer İmleri