I have two procedures, MAster & SLave, where MA call SL. Both of them has their own Error Handlers. However it's needs to pass some err's from SL to MA unhandled (or "as unhandled"). "Some" means here - manually raised err's. I.e. all custom err's, manually raised in SL, are subject to be passed to MA and to be handled there. But native MS err's must to be handled locally in SL.
I found the only way - to raise the same err again in SL in its handler. But it seems me clumsy...
Maybe there are other, more elegant solutions?
.
Code:Private Const ERAMGC = (45200 + vbObjectError) ' Private Sub sb_ErrTest_MA() ' Master Dim j& Dim sErrDsc$ On Error GoTo ErH For j = 1001 To 1003 Call sb_ErrTest_SL(j) Next ErE: Exit Sub ErH: With Err sErrDsc = .Description Select Case .HelpContext Case ERAMGC ' it is user raised err Debug.Print sErrDsc Stop Case Else sErrDsc = .Number & "_" & sErrDsc Debug.Print sErrDsc Stop End Select End With Resume ErE End Sub Private Sub sb_ErrTest_SL(pVal&) ' Slave Dim lDbz& Dim sErrDsc$ On Error GoTo ErH Select Case pVal Case 1001: ' OK - do nothing Case 1002: lDbz = pVal \ 0& Case 1003: Call sb_ErrRaise(pVal) Case Else: Stop End Select ErE: Exit Sub ErH: With Err sErrDsc = .Description Select Case .HelpContext Case ERAMGC ' it is user raised err Debug.Print sErrDsc Stop ' Here I need to pass this err unhandled .. ' .. to caller's err handler on uplevel procedure Call sb_ErrRaise(pVal) Resume ErE Case Else sErrDsc = "MS Err " & .Number & " - " & sErrDsc Debug.Print sErrDsc Stop ' Here I need to maintain this err localy Resume Next End Select End With End Sub Private Sub sb_ErrRaise(pVal&) Dim lNmb& Dim sDsc$ lNmb = pVal + vbObjectError sDsc = "ERA_" & CStr(pVal) 'HelpContext para used to pass Magic number by it .. Call Err.Raise(lNmb, , sDsc, , ERAMGC) ' .. to quicly dif raised err's from MS's End Sub




Reply With Quote
