您的位置:程序门 -> vb -> 基础类



请教防错代码该如何写


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教防错代码该如何写[已结贴,结贴人:zhuojiangg]
发表于:2007-04-10 16:22:16 楼主
小弟写在学写vb,不过发现有时如果遇到vb程序出错,会自动报警退出来显示system   error   time,看了点资料说在每个sub前面写代码   on   error   resume   next就可以不出现这种情况,系统仍然执行。还有一个是on   error   goto   这个又该怎么用。一般来说我们写vb该怎样加入防错代码,最好是给这两个例子介绍一下。谢谢高手指教。
发表于:2007-04-10 16:32:541楼 得分:20
on   error   goto是出现错误跳转到某个语句上
比如打开文件,执行操作,然后关闭文件,就可以写一个on   error   goto,跳转到关闭文件代码上,这样无论文件操作出现什么错误都可以确保文件被关闭。
发表于:2007-04-10 16:38:332楼 得分:50
on   error   resume   next   是跳过错误,继续执行
on   error   goto   xxx   是出错时转向错误处理模块:示例
public   sub   onerrordemo()
      on   error   goto   errorhandler       '   enable   error-handling   routine.
      dim   x   as   integer   =   32
      dim   y   as   integer   =   0
      dim   z   as   integer
      z   =   x   /   y       '   creates   a   divide   by   zero   error
      on   error   goto   0       '   turn   off   error   trapping.
      on   error   resume   next       '   defer   error   trapping.
      z   =   x   /   y       '   creates   a   divide   by   zero   error   again
      if   err.number   =   6   then
            '   tell   user   what   happened.   then   clear   the   err   object.
            dim   msg   as   string
            msg   =   "there   was   an   error   attempting   to   divide   by   zero! "
            msgbox(msg,   ,   "divide   by   zero   error ")
            err.clear()   '   clear   err   object   fields.
      end   if
      exit   sub             '   exit   to   avoid   handler.
errorhandler:     '   error-handling   routine.
      select   case   err.number       '   evaluate   error   number.
            case   6       '   divide   by   zero   error
                  msgbox( "you   attempted   to   divide   by   zero! ")
                  '   insert   code   to   handle   this   error
            case   else
                  '   insert   code   to   handle   other   situations   here...
      end   select
      resume   next     '   resume   EXECution   at   same   line
                                '   that   caused   the   error.
end   sub

还有一个raise是将错误升起
发表于:2007-04-10 16:38:543楼 得分:0
on   error   goto  
 


err;
msgbox " "
是一个出错处理!当出错的时候就跳到下面的执行!
发表于:2007-04-10 16:43:484楼 得分:0
msdn的网站(http://msdn2.microsoft.com)上有详细描述:下面是专门介绍on   error   goto   的连接:
http://msdn2.microsoft.com/zh-cn/library/5hsw66as(vs.80).aspx
发表于:2007-04-10 17:03:345楼 得分:0
on   error   resume   就是忽略出错行,继续执行下一句
on   error   goto   就是一旦出错,跳转到goto后面标记行
发表于:2007-04-10 17:14:596楼 得分:30
on   error   goto   语句     on   error   goto   语句启用异常处理的某个例程,并指定该例程在此过程中的位置。它使用标签或行号,指出特定异常处理例程在代码中的位置。使用   -1   时,在过程内部禁用错误处理。使用   0   时,禁用当前异常。如果没有   on   error   语句,并且在当前调用堆栈中所有方法均未处理异常,则发生任何运行时错误都将是致命的:执行过程停止并显示错误消息。     
      下表列出了   on   error   goto   语句可能使用的方法。   语句   任务   on   error   goto   -1   将   err   对象重置为   nothing,从而在例程中禁用错误处理   on   error   goto   0   将最后的异常处理程序位置重置为   nothing,从而禁用异常   on   error   goto   <标签名>   将指定标签设置为异常处理程序的位置   on   error   resume   next   创建   resume   next   行为,作为最近的异常处理程序的位置     resume   和   resume   next     resume   语句本身可以将控制权返回导致异常的语句。执行过程将返回到最初产生异常的那一行。     相比较而言,resume   next   语句将在发生异常后恢复执行过程。该语句指定,在异常事件中,控制权将传递给紧接发生异常语句之后的语句。resume   next   的使用可允许出现不太严重的失败。引发错误的语句失败,但应用程序将继续执行,且允许用户改正错误并继续进行操作。与此类似,resume   <标签>   将控制权传递给在其   line   参数中指定的标签。确保行标签与调用它的代码位于相同的过程中,因为它不能跨函数使用。
发表于:2007-04-10 17:15:157楼 得分:0
感覺technofantasy((vb   mvp)www.applevb.com)   不論是回答vb問題,還是和斑竹辯論(http://community.csdn.net/expert/topic/5451/5451634.xml?temp=.4218866)都是非常的專業。


快速检索

最新资讯
热门点击