程序编程结构规范
(创建时间:2010年11月25日 17:45:00)
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 '显式销毁
文档中心