I'm not sure how 'Try, Catch, Fail' differs from the following 'On Error Goto' approach:

Sub MyProcedure()

<declare variables>

On Error GoTo PROC_ERROR:

<main code block>

PROC_EXIT:
<cleanup code>
Exit Sub

PROC_ERROR:
Select Case Err.Number

Case <first error case>

Case <next error case>

Case Else
Call LogError(Err, "MyProcedure")

End Select

GoTo PROC_EXIT:

End Sub