I believe you have posted this before and now that you have actually asked for opinions, here we go.

This is not like VB.NET's Try, Catch, Finally as you explicity tell the compiler to ignore errors (On Error Resume Next or On Error GoTo 0)...

The following is VB.NET code with the proper basic Try, Catch, Finally, End Try code in a form load sub.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try

        Catch ex As Exception
        Finally

        End Try
    End Sub
End Class

and while some may think it would be nice to have such error handling in vb6, one can achieve the same with standard vb6 error handling if one thinks about it.

Good Luck

Edited 7 Years Ago by vb5prgrmr: n/a

My post was sent for the old VB 4,5,6 and not for VB.net.
I know the syntax of VB.net Try-Catch statement of course and I wrote that my way similar not same.
But it can achieve the almost same essentially.

I realy tell the VB compiler to ignore errors between 'On Error Resume Next' and 'On Error Goto label'.
Do You know other or better way in old VB, VBA, VBScript?
May I ask You, what code do You use for structured exception handling in VB?

Edited 7 Years Ago by RobEin: n/a

I use the standard error handling scheme but then again I also code defensivly...

The basics for debugging are as follows...

Option Explicit

Private Sub Form_Load()

On Error GoTo Form_LoadError

Exit Sub
Form_LoadError:

MsgBox "Form_Load " & Err.Number & ":" & Err.Description

End Sub

This way I know where, #, and description while designing. Once I have finished the code and test the application and know where and what errors might occur, I adjust the code to a more defensive posture.

An example of this might be installing a dir check for a file to see if it exists before trying any type of file operation.

Then there are some errors that just cannot be accounted for like doing a recursive dir search on a hard drive from the root and the dir function coming across a *.sys file and an example on how I get around that can be found here...

http://www.tek-tips.com/viewthread.cfm?qid=1533303&tmac=fav&val=1,1533303

So, if you can see that example the code is not "do this, do that, do the other". It is more like "If I can do this then do it else try to do something else" and so on.

Good Luck

Then neither is try catch finally...

The finally feature is optional and not required to catch an expected exception (Finally does not exist in C++, for example.).
But it's a possible solution for Finally in VB-Try-Catch:

With New Try: On Error Resume Next
            Debug.Print 1 / 0 'Division by zero
    .Catch: On Error GoTo 0: Select Case .Number
            Case 11
                MsgBox "Division by zero error."
            Case Else
                MsgBox Err.Description
        End Select
        [...Finally-code...]
    End With

The difference between VB-Try-Finally and other langugage Try-Finally:
If Exit Sub-Function-Property is used in Select-Case statement, the "Finally" section will not be executed.
There may be similarly problems even with Exit For-Do or GoTo or Return statements.

Edited 7 Years Ago by RobEin: n/a

This article has been dead for over six months. Start a new discussion instead.