我已经和VBA合作了很长一段时间了,但我对错误处理仍然不太了解.
一篇好文章是CPearson.com的文章
但是我仍然想知道我以前使用ErrorHandling的方式是否完全错误: 第1块
On Error Goto ErrCatcher
If UBound(.sortedDates) > 0 Then
// Code
Else
ErrCatcher:
// Code
End If
Run Code Online (Sandbox Code Playgroud)
if子句,因为如果它是真的,它将被执行,如果它失败,Goto将进入Else-part,因为数组的Ubound不应该为零或更少,没有Error,这种方法工作得很好至今.
如果我理解正确,它应该是这样的: 第2块
On Error Goto ErrCatcher
If Ubound(.sortedDates) > 0 Then
// Code
End If
Goto hereX
ErrCatcher:
//Code
Resume / Resume Next / Resume hereX
hereX:
Run Code Online (Sandbox Code Playgroud)
或者甚至像这样: 第3座
On Error Goto ErrCatcher
If Ubound(.sortedDates) > 0 Then
// Code
End If
ErrCatcher:
If Err.Number <> 0 then
//Code
End If
Run Code Online (Sandbox Code Playgroud)
我看到的最常见的方式是,一个错误"Catcher"位于sub的末尾,Sub实际上以"Exit Sub"结束,但是如果Sub是相当的话,它不会有点混乱如果你反之亦然阅读代码?
第4座
以下代码的来源: CPearson.com …
我有一个导航控制器有三个视图.我将三个视图控制器推到导航控制器的堆栈上,并希望通过单击按钮立即弹出所有推动的视图控制器.我希望能够从任何推动视图控制器做到这一点......
请你能帮助我,并指出我如何做到这一点?