27 Mayıs 2014 Salı
HATA YAKALAMA ÖRNEĞİ
PROJE KODLARINI
İNDİR
Imports System.IO Public Class AnaForm 'Dosya adı metin kutusu altındaki metin mesajı Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Aşağıdaki kod hafızasında bir dize oluşturmak için yeni StringWriter kullanır. Dim writer As StringWriter = New StringWriter() With writer .WriteLine("Hata Yakalamayı test için Yukardaki dosyayı her butona tıklayıp deneyin. Sonra olmayan bir dosya adı girip testi tekrarlayın") .WriteLine("") .WriteLine(" Application.StartupPath\DsyAdi.txt") .WriteLine(" Application.StartupPath\ASLAN\DsyAdi.txt") .WriteLine(" \\ServerName\ASLAN\DsyAdi.txt") End With 'Bir dize için StringWriter deki işlemleri uygular Me.txtMessage.Text = writer.ToString() End Sub Private Sub cmdNoTryCatch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNoTryCatch.Click 'Kullanıcı muhtemelen programın hata yakalaması için olmayan bir dosyaya adı girin. Dim message As String = "Aşağıdaki kod, hiçbir hata bulamazsa çalışacaktır." & vbCrLf & " Özel bir durum olursa hata verecektir" & vbCrLf & " Devam etmek istiyor musunuz?" If MessageBox.Show(message, Me.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then '(Dosyanın en üstünde girişe bakın) System.IO Namespace dan FileStream sınıfını kullanın Dim fs As FileStream Try 'Dosya mevcut değilse 'Bu komut başarısız olur. Aksi durumda dosyayı açar fs = File.Open(Me.txtFileName.Text, FileMode.Open) MessageBox.Show(Me.txtFileName.Text & " Bulundu ve mesajdan sonra Açılacak" & vbCrLf & " Dosya boyutu: " & fs.Length, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information) Dim yol As String = Application.StartupPath & "\" & Me.txtFileName.Text Process.Start("NotePad.exe", yol) fs.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Exclamation, Me.Text) End Try End If End Sub Private Sub cmdBasicTryCatch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBasicTryCatch.Click 'Bu prosedür yakalamak için, temel bir deneyim yapacak. '(Dosyanın en üstünde girişe bakın) System.IO Namespace dan FileStream sınıfını kullanın Dim fs As FileStream Try 'Dosya mevcut değilse Bu komut başarısız olur. fs = File.Open(Me.txtFileName.Text, FileMode.Open) MessageBox.Show("Dosyanın boyutu: " & fs.Length, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information) fs.Close() Catch exp As Exception 'Açıkça yakalama değil, herhangi bir hata yakalamış olacak. MessageBox.Show(exp.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop) End Try End Sub Private Sub cmdDetailedTryCatch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDetailedTryCatch.Click 'Bu prosedür herhangi bir IO ilgili hatalar arayan yakalamak, belirli bir deneyin yapacak. '(Dosyanın en üstünde girişe bakın) System.IO Namespace dan FileStream sınıfını kullanın Dim fs As FileStream Try 'Dosya mevcut değilse 'Bu komut başarısız olur. fs = File.Open(Me.txtFileName.Text, FileMode.Open) MessageBox.Show("Dosyanın boyutu: " & fs.Length, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information) fs.Close() Catch exp As FileNotFoundException 'İstenen dosya yok, ne zaman bir hata yakalamak olacak. MessageBox.Show("İstediğiniz dosya yok.", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop) Catch exp As DirectoryNotFoundException 'istenen dizin yoksa zaman hata yakalanacak MessageBox.Show("İstediğiniz dizin yok.", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop) Catch exp As IOException 'Herhangi bir jenerik IO durumu yakalamamış olacak. MessageBox.Show(exp.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop) Catch exp As Exception 'Çünkü biz herhangi bir hatayı yakalamış olacağız MessageBox.Show(exp.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop) End Try End Sub Private Sub cmdCustomMessage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCustomMessage.Click 'Bu prosedür herhangi bir IO ilgili hata yakalamak için Try yapacak '(Dosyanın en üstünde girişe bakın) System.IO Namespace dan FileStream sınıfını kullanın Dim fs As FileStream Try 'Dosya mevcut değilse 'Bu komut başarısız olur fs = File.Open(Me.txtFileName.Text, FileMode.Open) MessageBox.Show("Dosyanın boyutu:" & fs.Length, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information) fs.Close() Catch exp As IOException ' çok satırlı dize oluşturmak için StringWriter kullanabilirsiniz. 'Ancak, bu basit bir mesaj için geçerli 'StringWriter System.IO ad alanı eklenmelidir. Dim message As String message = "İstediğiniz dosya açılamıyor, " & Me.txtFileName.Text & vbCrLf & vbCrLf & _ " Ayrıntılı Hata Bilgileri:" & vbCrLf & vbCrLf & _ " Mesaj: " & exp.Message & vbCrLf & _ " Kaynak: " & exp.Source & vbCrLf & vbCrLf & _ " Stack Trace:" & vbCrLf Dim trace As String 'erişme StackTrace bir durum nedenile nesneleri blok halinde yakalarız Try trace = exp.StackTrace() Catch stExp As Security.SecurityException trace = "Güvenlik kısıtlamaları nedeniyle yığın izlemesine erişilemiyor." Catch stExp As Exception trace = "Yığın izlemesine erişilemiyor." End Try message = message & trace MessageBox.Show(message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop) Catch exp As System.Exception 'Bu catch işlemi beklenmeyen bir hatayı yakalar MessageBox.Show(exp.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop) End Try End Sub Private Sub cmdTryCatchFinally_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTryCatchFinally.Click 'Bu prosedür, temel bir deneyin gerçekleştirmek yakalamak, ve sonra bir Nihayet olacaktır. '(Dosyanın en üstünde girişe bakın) System.IO Namespace dan FileStream sınıfını kullanın Dim fs As FileStream = Nothing Try ' Dosya yoksa bu komut başarısız olur. fs = File.Open(Me.txtFileName.Text, FileMode.Open) MessageBox.Show("Dosyanın boyutu: " & fs.Length, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information) Catch exp As Exception 'Çünkü biz herhangi bir hata yakalamamış olacağız MessageBox.Show(exp.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop) Finally ' dosya açmılamaz ise, o zaman bizim referansımız mesaj olarak verilecek If Not fs Is Nothing Then fs.Close() MessageBox.Show("Dosya başarıyla kapatıldı", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Try End Sub Private Sub exitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles exitToolStripMenuItem.Click Me.Close() End Sub End Class
Hiç yorum yok:
Yorum Gönder
Sonraki Kayıt
Önceki Kayıt
Ana Sayfa
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder