ProgramlamaVB geliştirici, VB.NET geliştirici

Visual Basic'te hata işleme yöntemleri nelerdir? On Error GoTo ve Try...Catch arasındaki farkı açıklayın (eğer VB.NET'ten bahsediyorsak).

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

Visual Basic'te hata işleme için On Error (VB6) ve Try...Catch (VB.NET) yapıları kullanılır.

  • On Error GoTo <Label> — VB6'dan kalma eski bir yöntemdir, hata oluştuğunda belirtilen etikete geçiş yapar. İç içe yapıları desteklemez, karmaşık kodlara yol açabilir.
  • Try...Catch...Finally — modern bir yöntemdir (VB.NET), istisnalarla çalışmayı sağlar, farklı hata türlerini farklı Catch bloklarında işlemeye olanak tanır ve Finally'de kesinlikle final işlemleri yapar.

Örnekler:

VB6:

Sub OpenFile() On Error GoTo ErrorHandler Open "file.txt" For Input As #1 ' Dosyayı okuma Close #1 Exit Sub ErrorHandler: MsgBox "Hata: " & Err.Description End Sub

VB.NET:

Sub OpenFileVBNet() Try Using reader As New StreamReader("file.txt") Dim line As String = reader.ReadLine() End Using Catch ex As IOException MsgBox("Hata: " & ex.Message) Finally ' Her zaman çalışır End Try End Sub

Kurnaz Bir Soru.

VB6'da On Error Resume Next bloğunda bir hata meydana gelirse, nerede olduğunu nasıl öğreniriz ve nasıl düzgün bir şekilde işlem yaparız?

Doğru cevap: On Error Resume Next modunda program bir sonraki satırda çalışmaya devam eder. Hatanın meydana gelip gelmediğini öğrenmek için, çağrının sonunda Err nesnesini kontrol etmek gerekir.

On Error Resume Next ' bazı kodlar If Err.Number <> 0 Then MsgBox "Hata: " & Err.Description Err.Clear End If

Konunun inceliklerini bilmediğinizde oluşan gerçek hata örnekleri.


Hikaye

VB6'dan VB.NET'e geçtikten sonra, bazı işleyicileri On Error GoTo tarzında bıraktılar, bu da hataların örtülmesine neden oldu. Hata işleme mantığını karıştırdılar ve veriler veritabanında yarım kalmış haliyle kaldı, hata ancak aylar sonra fark edildi.


Hikaye

Err.Clear kullanılmadı, bu nedenle bir işlenmiş hatadan sonra Err.Number sıfır olmayan bir değer olarak kaldı. Daha sonraki kontrollerde program yanlış bir şekilde yeni bir hata meydana geldiğini düşündü ve hatalı işlem bölgelerine gitti.


Hikaye

Refaktoring sırasında On Error Resume Next'un silinmesini unuttular, bu nedenle hatalar "yutuldu" ve hiçbir mesaj verilmedi. Problem tanıma süreci saatler sürdü, çünkü uygulama normal çalışıyormuş gibi görünmesine rağmen önemli verileri kaybediyordu.