您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 求职简历 > On-Error-Resume-Next用法
该语句的作用是:启用或禁用错误处理程序。一般用法如下:OnErrorResumeNextOnErrorGoTo0如果在您的代码中未使用OnErrorResumeNext语句,所发生的运行时错误将显示错误信息,同时,代码的执行也随之终止。但当你采用它时,就会使程序按照产生错误的语句之后的语句继续执行,或是按照最近一次所调用的过程(该过程含有OnErrorResumeNext语句)中的语句继续运行。这个语句可以不顾运行时错误,继续执行程序,之后您可以在过程内部建立错误处理例程。在调用另一个过程时,OnErrorResumeNext语句变为非活动的。所以,如果希望在例程中进行内部错误处理,则应在每一个调用的例程中执行OnErrorResumeNext语句。如果您已启用OnErrorResumeNext错误处理程序,则可使用OnErrorGoTo0禁用错误处理程序。scriptlanguage=vbsOnErrorResumeNextErr.Raise6'产生溢出错误。msgbox(Error#&CStr(Err.Number)&&Err.Description)cnbruce.com'缺少对象,因为cnbruce是自定义的msgbox(Error#&CStr(Err.Number)&&Err.Description)Err.com'对象不支持该属性或方法msgbox(Error#&CStr(Err.Number)&&Err.Description)Err.Clear'清除错误。/script附注:要在代码中生成运行时错误,请用Err对象的Raise方法。这样的情况经常在调试程序的时候看见,比如分别调试下面两程序则会显示。1,err1.asp%Err.Raise6%技术信息(用于支持人员)错误类型:MicrosoftVBScript运行时错误(0x800A0006)溢出2,err2.asp%cnbruce.com%调试的时候也就是技术信息(用于支持人员)错误类型:MicrosoftVBScript运行时错误(0x800A01A8)缺少对象:'cnbruce'但当你在首行添加了OnErrorResumeNext之后,发现不报错提示,表明内部错误处理完成。但进行下列程序的时候发现3,err3.asp%OnErrorResumeNextcnbruce.comOnErrorGoTo0cnbruce.com%这时运用了OnErrorGoTo0,则会显示出错信息,只不过不是第三行,而是第五行的cnbruce.com错误对象了。asp中OnErrorResumeNext的详细用法OnErrorResumeNext的意思是如果发生错误就继续直接执行出错语句下面的那句。一般的,如果出错,VB会报告并停止运行,但有时错误并不严重,不会产生严重影响,你可以在可能出错的语句前面加上这句。但是如果错误很严重,会影响到后续语句,就不要使用这个方法了当我们在程序最上面使用OnErrorResumeNext语句时,所有的错误都会被忽略,程序会自动执行下一条语句。这样程序就会完全执行,出错后用户也不会看到出错信息。但是这样也有不好的地方,那就是如果程序没有按照你想像的执行的话,你就很难找到到底是哪里出了问题,所以你就得在必要的地方对错误进行处理。处理错误在ASP中,处理错误的最好的办法就是在程序最底端放上代码来处理错误。我也推荐在每个ASP程序都使用缓冲区。这样的话,如果错误发生,页面就会停止,页面内容也会被清除,这样用户就不会看到错误信息,对你们的抱怨也就少了!下面是一个例子:%@LANGUAGE=VBScript%%Response.Buffer=True设置buffer为TrueOnErrorResumeNext开始错误处理%%错误处理IfErr.Number0Then清除页面Response.Clear显示错误信息给用户%HTMLHEADTITLE/TITLE/HEADBODYBGCOLOR=#C0C0C0FONTFACE=ARIALAnerroroccurredintheexecutionofthisASPpageBRPleasereportthefollowinginformationtothesupportdeskPBPageErrorObject/BBR错误Number:%=Err.Number%BR错误信息:%=Err.Description%BR出错文件:%=Err.Source%BR出错行:%=Err.Line%BR/FONT/BODY/HTML%EndIf%你们上面看到了,我首先设置OnErrorResumeNext,这样出现错误就不会影响程序的执行。事关程序命运OnErrorResumeNext问题各位高手请教你们我一个ASP投稿程序,数据库连接的代码是%'dimconn'dimconnstr'dimdbdb=data/BB.asp'数据库文件位置onerrorresumenextconnstr=DBQ=+server.mappath(&db&)+;DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};setconn=server.createobject(ADODB.CONNECTION)iferrthenerr.clearelseconn.openconnstrendif%但现在经常出现ASP跑死,不能打开,要过几分钟才能恢复。请问是不是和其中OnErrorResumeNext有关系,不能终止错误,如果是,如何避免在运行错误时,可以自动终止,释放出一些资源。多谢各位!问题补充:如果删除了这个OnErrorResumeNext,会不会有大的弊端?这个代码可否优化点,节省一些程序资源消耗,避免跑死ASP的情况?首先,OnErrorResumeNext不是避难用的,一般来讲在程序调试无误以后,加上这句话,用来防止意外,如果本身你的程序就有问题,这句话的作用就是让你逃避错误。其实删除这句话也没什么妨碍,这样的话iferrthenerr.clearelseconn.openconnstrendif就要改成conn.openconnstr,这样的话Err就会实时的显示出来,程序有错时执行的是iferrthenerr.clear这样只是把ERR的错误信息清空而程序自然没什么反应的iferrthenerr.clearresponse.write(出错!)response.endelseconn.openconnstrendif你的错误处理太那个了,出错了忽略有什么用当然是把错误说出来,然后想办法,你光把错误清除.可是你下面的代码还是要调用这个CONN,但这个CONN的错误处理是,不管连没连上,都往下走,那么没连上的时候,下面不知道当然还是去用这个连接,自然跑死解决因使用ONERRORRESUMENEXT导致被掩饰的错误引起结果不正确的问题程序首端添加了OnErrorResumeNext,以更好地处理执行时引起的错误,但在数据库访问中引出了麻烦,因为我在一个查询操作中出错了,从运行过程来看就是被掩盖的错误导致的。请问如何解决这个难题?确实,因为使用了OnErrorResumeNext,即使前一步的操作(象你的查询操作)出了错,以后操作仍会被继续执行,最终导致完全错误的结果。我们的解决办法就是先检查一下错误再继续执行,具体代码见下:IfErr.Number=0AndobjConnection.Errors.Count=0Then’如果没有错误,则继续执行数据库查询SetrstResults=dbData.Execute(txtSql)EndIf顺便说一句,OnErrorResumeNext要添加到你声明语言后的第一行,而不是其它位置
本文标题:On-Error-Resume-Next用法
链接地址:https://www.777doc.com/doc-4586689 .html