Jangogo :
1.异常的处理
在4F产品中,不能使用以下的错误处理模式:
Public Function myfun() On Error GoTo ToExit '打开错误陷阱 '..................................... '------------------------------------------------ Exit Function '---------------- ToExit: Err.Raise Err.Number, Err.Source, Err.Description '错误被抛出,但是不知道上层是否处理了! End Function
这种方式下,异常会抛到上层,但是没有人知道上层是怎么处理的,如果上层也是用这种处理模式(继续抛出异常),就会引起整个软件崩溃!
因此,我们不能使用 Err.Raise 来抛出异常(我们应该是处理异常,而不是制造更多的异常)
这种方式仅用于在函数内部无法通过陷阱进行处理,而且抛出异常后的上层接收异常处理必须明确的进行处理的情况
正确的处理方式应该是这样:
第一种:
Public Function myfun() On Error Goto ErrH '............. Exit Function ErrH: MyApp.ShowErr "......" ' 进行异常处理,如果异常不影响程序运行的结果,就不要出现提示对话框 Resume Next ' (或者 Resume 或者什么都不做,退出本过程) 异常处理完成了, 你要根据异常的不同情况决定是:执行下一行还是重复再试一次还是什么都不做 End Function
也可以用第二种处理方式:
Public Function Myfun() On Error Resume Next ''不管如何,只管往下执行 '你这里要考虑如果发生异常了,会有什么效果! if Err then ''出错了,我们再来做处理 MyApp.ShowErr '... '是否做修正。。。。 End if End Function
2. 窗口对象的重用
窗口对象必须以New 的方式调用,而不是直接使用你的窗口名称:
'这样直接使用窗口名称来使用窗口是不正确的, MyApp.ShowForm frmMain,0 '应该这样使用: Dim frm As New frmMain MyApp.ShowForm frm,0 '理由很简单,通过frmMain只是创建一个实例,当我们需要创建多个实例时,程序就会变得莫名其妙,例如我们要看明细账,一个科目一个窗口,当用户选择要看个多科目时.
3.自己创建的对象必须显式地销毁
MyObj.Close '如果有Close这方法,必须先调用 Set MyObj =Nothing '显式销毁
文档中心