电脑维修第一互动门户_www.PC106.com 为了方便您再次访问电脑维修站,请点击收藏本站!设为首页
操作系统 · 硬件学院 · 软件学院 · 网络学院 · DIY 经验 · 数据恢复 · 网站技术 · 维修网点 · IT 黄 页 · 大师答疑
故障症状 · 电脑优化 · 病毒快报 · 黑客安全 · 维修宝典 · 电脑保养 · 服 务 器 · 在线杀毒 · 在线电视 · 网址服务
维修 CPU·主板·硬盘·内存·显卡·显示器·键盘鼠标·声卡音箱·软驱光驱·打印机·机箱电源·BIOS·网卡·局域网·浏览器
您现在的位置: 电脑维修 >> 网站技术 >> .NET技术 >> .NET基础 >> 网站技术正文
错误处理程序
作者:佚名 文章来源:不详 点击数: 更新时间:2007-2-3 15:07:09


    前面所提的Trace 的确是很方便,不过它只能针对程序开发时或维护时使用。而在执行程序时常因为使用者操作错误或程序写作不周详,而发生发生执行时期错误(Runtime Error)。此时如果让使用者的浏览器显示错误的讯息,那么对于网站的形象就会造成负面的影响。所以网页开发时我们必须假设所有使用者会发生的错误,并且撰写程序来处理这些错误;这个处理错误的程序称为「错误处理法则」。VB.NET 支持了两种错误处理法则,一个是从以前的VB 就支持的On ErrorGoto 叙述,另一个是全新的Try...Catch 叙述。这两种比较起来以Try...Catch 较结构化,但是On Error Goto 的使用较为简单,两者各有利弊。

On Error Goto 叙述
OnError 错误处理法则大约分为三个步骤:
    1. 开启错误捕捉码,指定错误发生时应该执行哪些程序代码。
    2. 撰写修正错误的程序
    3. 结束错误处理继续执行正常的程序


    在介绍On Error Goto 叙述之前我们先了解Err 对象。当程序发生错误时,所有和错误相关的讯息都会被纪录在这个对象里;我们能利用Err 对象来检视目前发生错误的错误讯息、错误代码及简述,或是用来引发一个自订的错误。Err 对象的属性如下所示:



Err 对象的方法如下所示:

致能错误捕捉
    接着我们要介绍如何建立错误处理法则。首先我们在程序的开始处输入「On Error Goto 标注」来致能错误捕捉的功能,并指定程序发生错误时程序代码要转移的错误处理法则。下列程序代码片段将错误捕捉打开,并指定程序发生错误时会跳到标签「ErrHandler」来执行错误处理法则:

Sub 程序名称(Sender As Object, e As EventArgs)
On Error Goto ErrHandler
...
Exit Sub
ErrHandler:
错误处理码...
...
跳出错误处理法则
End Sub

????

    上述程序代码片段中,我们输入叙述OnError Goto...开启错误捕捉,并指定发生错误时跳至ErrHandler 标签处执行错误处理法则;卷标的宣告只要在卷标名后加上冒号「:」即可。我们在程序的最后面的地址将错误处理法则加入,并且在错误处理法则标号前加Exit Sub 叙述;这是因为程序是逐行执行的,倘若没有发生任何错误还是会跳入错误处理法则执行错误处理的工作。所以我们在错误处理法则标号前加入Exit Sub 叙述,以避免没有发生错误时跳入错误处理法则中执行错误处理码;如果我们执行的程序是Function 程序时,在错误处理法则前要加入的 叙述为Exit Function

跳出错误处理法则
    在错误处理法则中程序的执行遇到End Sub 或End Function 叙述时便结束程序的执行。若我们要让程序回到程序中继续执行,则要使用Resume 叙述。Resume 叙述的使用有三种方式,如下表所示:

    在ASP.NET 中使用第一种Resume 时要特别注意,这种Resume 叙述最主要用在一般的Windows 应用程序上,倘若在ASP.NET 中使用Resume 叙述会导致无穷循环。因为ASP.NET回到错误的那一行后会将原本发生错误的程序代码再执行一次,接着又进入错误处理程序,如此反复进行下去成为无穷循环。下列范例我们建立一个具有完整错误处理法则的网页:

<Html>
<Form Runat="Server">
<ASP:TextBox Id="Text1" Runat="Server"/>X
<ASP:TextBox Id="Text2" Runat="Server"/>
<ASP:Button Id="Button1" Text="=" OnClick="Button1_Click"
Runat="Server"/>
<ASP:Label Id="Label1" Runat="Server"/><p>
<ASP:Label Id="Label2" Runat="Server"/>
</Form>
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object,e As Eventargs)
Label1.Text=""
Label2.Text=""
End Sub
Sub Button1_Click(Sender As Object,e As EventArgs)
On Error Goto ErrHandler '将错误捕捉打开
Label1.Text=Cint(Text1.Text)/Cint(Text2.Text)
Exit Sub
ErrHandler:
If Err.Number=13 Then '如果发生错误码为13
Label2.Text=Err.Description & "<br>两边都必须输入数字!"
Resume Next '回到发生错误行的下一行
End If
End Sub
</Script>
</Html>



    当Text1 及Text2 中都输入数值则显示正常的结果,但如果其中任一个TextBox 输入非数值型态的数据便引发一个错误;此时程序会跳到ErrHandler 卷标处执行错误处理法则。而非数字型态的值做型态转换会引发代码为13 的错误,所以我们可以使用If 叙述判断,当Err 对象的Number属性为13 时,Label2 将会显示「两边都必须输入数值」,接着回到发生错误的下一行继续执行。

Tips
    关于错误码以及其错误的讯息,如果你有MSDN(Microsoft Developer Network) Library 光盘,可以查询其中的「Trappable Errors」议题,或是浏览微软MSDN 的官方网站「Http://msdn.microsoft.com/library/default.asp 」在线查询,或是执行ErrCode.aspx 范例程序可以列出错误码以及错误描述。


MSDN Online Library

    
错误码以及错误描述



上网速度更快更爽、更安全下载使用Firefox火狐浏览器

网站技术录入:admin    责任编辑:admin 
  • 上一篇网站技术:

  • 下一篇网站技术:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

     IT图片报道

    14万元天价!640GB闪存硬盘美国问

    双核独显19寸液晶惠普PC机只卖49

    佳能MP160售价仅580元

    神舟双核液晶电脑3999起
     IT热点报道

    普通IT报道 中国电信称三年内实现光纤到户
    普通IT报道 广达个人电脑宣布已开始在江苏投入量产
    普通IT报道 14万元天价!640GB闪存硬盘美国问世
    普通IT报道 节后病毒猖獗系统瘫痪
    普通IT报道 AMD推出6款节能处理器
    推荐IT报道 双核独显19寸液晶惠普PC机只卖4999元
    普通IT报道 微软无奈下调Vista销售预期 XP仍是主角
    普通IT报道 佳能MP160售价仅580元
    推荐IT报道 神舟双核液晶电脑3999起
    推荐IT报道 4999元玩Vista 七喜12寸轻薄本升级
    关于公司 | 免责声明 | 广告服务 | 招贤纳士 | 联系我们 | 友情链接 1 2 3
    Copyright©2005 - 2007  http://www.PC106.com  All Right Reserved   
    桂ICP备06015569号