On Error Resume Next 的代替方法

On Error Resume Next 的替代方法。
Sub f()
    On Error Goto hErr
    ...
    Exit Sub
hErr:
    Debug.Print Err.Description
    Resume Next
End Sub

这样可以在不中断的情况下打印出所有错误,大家觉得怎么样?
------解决方案--------------------
编程思路有问题。
On Error Resume Next 仅适用于:
1)错了也没关系的情况(比如写文件之前删除旧文件,如果没有旧文件 Kill 语句会出错,而这是符合逻辑需求的);
2)在出错的语句下写了错误处理的代码。
其他情况都是滥用。
------解决方案--------------------
这也不是什么新鲜的方法, 最大的作用就是可以先把某些错误暂时搁置一旁, 最终你还是得回过头来解决问题的.
要说程序不出错,那当然是理想状态了. 但是最终给用户的版本里On Error是能少就少, 尽量做到没有.(不是忽略出错的可能性, 而是把会出错的隐患都解决掉)
------解决方案--------------------
引用:
这也不是什么新鲜的方法, 最大的作用就是可以先把某些错误暂时搁置一旁, 最终你还是得回过头来解决问题的.
要说程序不出错,那当然是理想状态了. 但是最终给用户的版本里On Error是能少就少, 尽量做到没有.(不是忽略出错的可能性, 而是把会出错的隐患都解决掉)


On Error这个词很有迷惑性。很多人把Error理解为“错误”。事实上,这里指“异常”(Exception)。

这里需要指出的是,错误指程序设计的缺陷,只要发现了就是必须修正的。不存在什么尽量减少错误。

而异常不是错误,不是能少就少。让程序忽略掉一个自身无法处理的异常本身就是设计缺陷。什么叫能少就少,尽量没有。这种说法很荒谬。

一个程序设计的基本准则就是,它只能处理它可以预见的异常,并且向它的调用者报告任何它所不能处理的异常。一个程序如果出现了程序设计者无法预见的异常,后果是很严重的,继续让程序运行,程序运行的状态不可预知,它的行为也不可预知。如果程序没有机制能阻止这种情况发生,这样的程序是非鲁棒的,根本是不可靠的。