猿问

VBA错误处理的好模式

VBA中的错误处理有哪些好的模式?


特别是在这种情况下我应该怎么做:


... some code ...

... some code where an error might occur ...

... some code ...

... some other code where a different error might occur ...

... some other code ...

... some code that must always be run (like a finally block) ...

我想处理这两个错误,并在可能发生错误的代码之后恢复执行。此外,最后的代码必须始终运行 - 无论先前抛出什么异常。我怎样才能达到这个目的?


qq_花开花谢_0
浏览 729回答 3
3回答

慕无忌1623718

我还要补充一下:全局Err对象是您与异常对象最接近的对象你可以有效地“抛出异常” Err.Raise而且只是为了好玩:On Error Resume Next 是魔鬼的化身和被避免,因为它默默地隐藏错误

湖上湖

所以你可以这样做Function Errorthingy(pParam)On Error GoTo HandleErr ' your code here    ExitHere:    ' your finally code    Exit Function    HandleErr:        Select Case Err.Number        ' different error handling here'        Case Else            MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, "ErrorThingy"        End Select   Resume ExitHereEnd Function如果你想烘焙自定义异常。(例如违反业务规则的那些)使用上面的示例,但使用goto根据需要改变方法的流程。
随时随地看视频慕课网APP
我要回答