ForumTayfa  

Go Back   ForumTayfa > Güvenlik & Bilgisayar & İnternet & Webmaster & Programlama Bölümü > Güvenlik & Bilgisayar & İnternet & Webmaster & Programlama > Programlama

Programlama Programlama hakkında herşeyi paylaştığımız, soru ve sorunlarımızı tartıştığımız bölüm...

Yeni Konu aç  Cevapla
 
LinkBack Seçenekler Stil
Alt 27.12.06, 16:46   #1 (permalink)
Deneyimli Tayfa
 
silentwolf - ait Kullanıcı Resmi (Avatar)
 
Üyelik Tarihi: Dec 2006
Nereden: burada
Mesaj Sayısı: 3.964
Konu Sayısı: 157
Takım: Fenerbahçe
Rep Gücü: 196650
Rep Puanı: 19663395
Rep Derecesi : silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000
Ruh Hali:

Standart Hata Denetlemek.




.Net de Hata Denetimi Yapmak.

İyi bir bilgisayar programcısı nasıl olur ? Bu soru gerçekten üzerinde çok durulması gereken bir soru. Bu sorunun bir sürü yanıtı olabilir ama bu yanıtlar arasında bir yanıt var ki belki de tek başına bilgisayar programcısını tarif etmekte
- İyi bir bilgisayar Programcısı : Yaptığı programlarda hata çıkmayan , kullanıcıyı sıkmayan, sistem kaynaklarını gereğinden fazla kullanmayan ve her platformda çalışan programlar üreten kişidir
Şimdi bu koşulu biraz irdeleyelim Programın dizaynı , sistem kaynaklarının kullanımı,ve platformlar arası çalışma özelliği programcı tarafından kodlanarak yapılması gereken işlemlerdir. Yalnız hatalar program çalışması esnasında ortaya çıkar ve her ortamda programın kırılmasını sağlarlar. Bu durumda programın çalışmasını durdurduğu için programın güvenirliliği konusunda pek hoş bir görüntü ortaya koymaz?
Peki vb 6.0 da Runtime(çalışma zamanı) hatalarını nasıl engelliyorduk
VB 6.0da kod yazılırken hataları engellememek için hata çıkacak satırın başına "on error resume next " ,"on local error goto 0" , "on error goto LABEL" gibi bir deyimler ekliyorduk bu deyimler bir fonksiyonda 1 den çok kullanılınca büyük bir karmaşa çıkarıyordu ve "Err." nesnesinde donen değerler de hatanın neden kaynaklandığını tam olarak anlamamızda yardımcı olmadığı gibi birde err kodlarını ezberlememizi zorunlu kılıyordu (56=file not found... gibi)

Şimdi VB.NETte hata yakalamak için bir program yapalım
C++ ve Java bilen arkadaşlar bu konuda pek zorlanmayacaklardır çünkü
VB.NETte hata yakalama işlemi try-catch-finally bloklarıyla yapılmaktadır
VB.NETte
* Hata çıkaracağına inandığınız kodları Try bloğunun arasına yazarız
* Eğer yazılan kodun hata çıkarması sonucunda bu alan işleme sokulacaktır bu alan içerisinde istenilirse hatanın neden çıktığı da anlaşılabilir bu değerlere göre kodları yeniden derleyebiliriz veya kullanıcıya bir mesaj verdirerek yönlendirmeye yapabiliriz.
* Bu olay her ortamda da çalışır ve opsiyoneldir yani sizin isteğinize bırakılmıştır isterseniz kullanabilirsiniz isterseniz silebilirsiniz
Şimdi Basit bir örnek yapalım
VB.NET ile yeni bir VB console projesi açalım bu proje içine aşağıdaki kodları yazalım
Console.WriteLine("simdi her hangi bir sayının 0 a
bölünmesi sonucu oluşacak hataları göreceğiz")
Console.WriteLine()
Dim i as Integer = 10
Dim j as Integer = 0
Dim k As Integer k = i/j Error satırı
Şimdi F5 e basalım ve ortaya çıkan hataları görelim VB.NET bize daha programı exe halinde çalıştırmadan sıfıra bölünme hatayı verecektir ...
Şimdi bu işlemden başarısız olduk yeniden kodu aşağıdaki gibi derleyelim Dikkat edin yeni kodumuzda Try-catch blokları arasına yazıyoruz


Try
Console.WriteLine("simdi her hangi bir sayının 0
a bölünmesi sonucu oluşacak hataları göreceğiz")
Console.WriteLine()
Dim i as Integer = 10
Dim j as Integer = 0
Dim k As Integer k = i/j Hatalı satır
Catch
Console.WriteLine("hata oluştu")
End Try
Şimdi bu kodu F5 tuşuna basarak derleyelim ilk olarak sub main içerisinde Try bloğuna işleme tutulacak ve sırasıyla ekrana ilk iki deeri yazacak sonra "i" değişkenini tanımlayacak, içine de 10 deerini atacak aynı işlemi J değişkeni için içine "0" değerini atayarak yaptıktan sonra " k " değişkenini tanımlama yapacağı anda sıfıra bölünme hatası oluşacak ve program hiçbir şey olmamış gibi Catch Bloğunun işlemi olan konsola hata oluştu yazısını yazıp program sonlanacaktır.
Şimdide yukarıdaki örneğe aşağıdaki kodu ekleyelim
Catch
Console.WriteLine("hata oluştu.")
Finally Bu olay her zaman gerçekleşecektir
Console.WriteLine()
Console.WriteLine("Bu mesajı hep göreceksin")
End Try
Yukarıdaki örneğe baktığımızda koda Finally alanının eklendiğini görüyoruz bu alan try Catch in bir opsiyonudur ve her zaman çalışır ekranda çıktı olarak "hata oluştu " ve "bu mesajı hep göreceksin" yazısı görünecektir
Her şey tamam da peki ben hatanın neden kaynaklandığını nasıl anlayacağım diyorsanız aşağıdaki örneği kodunuza ekleyeceksiniz

Catch e As Exception e değişkenini bir Exception
tipinde atar ve oluşan hataları e nin üzerinden toplamamızı sağlar
Console.WriteLine("Hata oluştu ")
Console.WriteLine(e.ToString()) Kullanıcıya
hata mesajının tam olarak açıklamasını verir
Console.WriteLine("The following error
occurred:")
Console.WriteLine( e.Message )
Hata mesajını yazar
Console.WriteLine( e.Source ) hataya
yol açan Uygulama ismini yada Objenin ismini verir
that caused the error
Console.WriteLine( e.StackTrace ) Hatanın
oluştuğu Stack
Finally
Console.WriteLine()
Console.WriteLine("This statement is always
printed")
End Try
Bu noktaya kadar Try chach ın exception ları nasıl yakaladığı hakkında basitçe bir bilgi edinmiş olduk catch satırı sadece bir satır olarak değil bir çok satır olarak da kullanılabilir örneğin yapmış olduğunuz program diskin her hangi bir bölgesine yeni bir dosya oluşturacak ve bilinmeyen hatalar meydana geliyor bu hatalar neler olabilir aşağıdaki örnekte bu hataların neden kaynaklanacağını ve hataları nasıl engelliyeceğimizi basitçe göreceğiz...
Şimdi bu kodu programınıza ekleyin ve teker teker kodun her satırını inceleyim
Try
File.Create("c:/temp/test.txt") Dosya
oluşturulması istemi
Catch ioe As System.IO.IOException
Console.WriteLine("bilinmeyen bir IO hatası
meydana geldi c:\temp dizininin olup olmadığını kontrol ediniz")

Catch se As System.Security.SecurityException
to take
this action.
Console.WriteLine("Bu işlemi gerçekleştirmeye hakkınız
yok!")
Catch e As Exception Tüm exception lar için
Console.WriteLine( e.ToString() )
End Try
Try bloğunda dosyayı oluşturmak istiyoruz bu blokta her hangi bir hata çıkması durumunda bu hataları Catch bloklarına yönlendiriyoruz
Catch ioe As System.IO.IOException : Program bu satırı yalnız diske bilgi yazma işlemi sırasında meydana gelen hatalarda çalıştıracaktır örneğin dikin Full olması yolun bulunaması yani verilen folderin bulunmaması ya da yazmaya karşı korumalı olması gibi
Catch se As System.Security.SecurityException: Bu satır kullanıcının güvenlik ten dolayı hakkı olmayan bir yere bilgi girmeye çalışması sonucu oluşur
Catch e As Exception : Bu alandaki veriler her hata oluşunda mutlaka işlenecektir
Sonuç olarak VB.NET, programcılar, biz vb programcıları için yine bir güzellik yapmış ve baş belamız olan " hata ayıklama " bu kadar basit bir düzeye indirmiştir


__________________
bir silahım olsaydı...




hiç bir farklılık ayrımcılığa neden olamaz.
Hürriyet Hürriyettir.

silentwolf isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 07.01.07, 19:15   #2 (permalink)
Yeni Tayfa
 
G.A.F - ait Kullanıcı Resmi (Avatar)
 
Üyelik Tarihi: Jan 2007
Mesaj Sayısı: 23
Konu Sayısı: 4
Rep Gücü: 0
Rep Puanı: 10
Rep Derecesi : G.A.F 0-250000
Standart Cevap: Hata Denetlemek.




saol teşekkürler
__________________________----
şampiyon fenerbahçe


G.A.F isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 15.09.08, 21:01   #3 (permalink)
Acemi Tayfa
 
crazy_lover_31 - ait Kullanıcı Resmi (Avatar)
 
Üyelik Tarihi: Sep 2008
Nereden: made in turkey
Mesaj Sayısı: 750
Konu Sayısı: 114
Takım: Galatasaray
Rep Gücü: 2495
Rep Puanı: 248326
Rep Derecesi : crazy_lover_31 0-250000crazy_lover_31 0-250000crazy_lover_31 0-250000crazy_lover_31 0-250000crazy_lover_31 0-250000crazy_lover_31 0-250000crazy_lover_31 0-250000crazy_lover_31 0-250000crazy_lover_31 0-250000crazy_lover_31 0-250000crazy_lover_31 0-250000
Ruh Hali:

Standart Cevap: Hata Denetlemek.




paylaşım için teşekkürler...


__________________



crazy_lover_31 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 13:32.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.6.0
User Alert System provided by Advanced User Tagging v3.0.6 (Lite) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
ForumTayfa

Arşiv: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98 99 100 102 103 104 105 106 155 156 157 158 159 160 161 162 163 164 167 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271


ForumTayfa - Link Değişimi
Telinka İletişim | Voip Ürünleri | Link Değişimine Katılın |

Sitemiz bir forum sitesi olduğundan dolayı, kullanıcılar her türlü görüşlerini önceden onay olmadan anında siteye yazabilmektedir. ForumTayfa Yöneticileri mesajları itina ile kontrol etse de, bu yazılardan dolayı doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Yine de sitemizde yasalara aykırı unsurlar bulursanız [email protected] email adresine bildirebilirsiniz, şikayetiniz incelendikten sonra en kısa sürede gereken yapılacaktır.

Any member of our web site has the right of adding comments instantly without getting permisson due to the forum structure of our site basis. Althought, our site modarators check comments with care, all the responsibilities sourced from these comments directly belong to the members. If you still find any illegal content in our site ( A.buse, H.arassment, S.camming, H.acking, W.arez, C.rack, D.ivx, Mp.3 or any Illegal Activity ), please report us via [email protected] .Your reports will be evaluated as soon as the arrival of your e-mail.