好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

异常处理和验证控件.ppt

41页
  • 卖家[上传人]:m****
  • 文档编号:601435227
  • 上传时间:2025-05-16
  • 文档格式:PPT
  • 文档大小:342.15KB
  • / 41 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第5章 异常处理和验证控件,郑州信息科技职业学院 张中兴,本章内容,错误处理,使用验证服务控件,5.1 错误处理,一,.,异常处理,异常:发生不同类型的错误抛出异常:系统或程序本身向外声明一个异常发生异常类:错误的种类,都是特定类的对象错误页面:一个特定的错误页面处理异常:出现错误时不希望只是出现错误页面,而是能对错误直接处理处理错误的方法(级别):,1.,在类级,2.,在页面级,3.,在应用程序级,二,.,在类级(程序中)使用,trycatch,语句块处理异常,try,double dVal1=Convert.ToDouble(txtValue1.Text);,double dVal2=Convert.ToDouble(txtValue2.Text);,double result=dVal1/dVal2;,labMessage.Text=txtValue1.Text+/+txtValue2.Text;,labMessage.Text+=+result;,catch(FormatException ex1),labMessage.Text=Please enter a valid number;,catch(Exception ex2),labMessage.Text=Unable to compute a value with these values;,有时需要使用,finally,做最后的处理,无论是否发生异常。

      try,/Open a database connection,/Execute SQL statement,catch(DbException ex),/Handle database exception,finally,/Close database connection if it exists,1.,异常开销 不是多有的问题都需要使用异常来对待,如接受用户数据的输入下面的处理方法并不是很合适:,try,SomeBusinessObject.Login(email);,/Other code dependent upon a successful login,catch(Exception ex),/Display message that email was not found,使用下面的处理方法程序将更加健壮:,bool okay=SomeBusinessObject.Login(email);,if(!okay),/Display error message on page,else,/Other code dependent upon a successful login,2.,可能的异常处理策略,当有异常出现时有四种处理策略:,通过捕获异常来吞掉它,并且继续正常执行而忽略异常。

      在,catch,语句块中完全处理异常不捕获异常而忽略它(让其他类来处理它)捕获异常并重新抛出它,以便某个其它的类来处理它说明:,第一种方法根本不合适属于典型的不负责任第二种方法最理想,但难以做到,不是什么问题自己都能够解决第三种方法也比较多见,有时候自己无能力处理,只好交给别人处理第四种方法也比较多见,根据情况进行处理,并将错误上报try,/Other code that causes an exception,catch(Exception ex),/Do something with exception,/Rethrow exception,throw;,或,throw new Exception(myMessage,ex);,三,.,页面级的异常处理,ASP.NET,提供了一个,Page_Error,事件,专门处理页面级异常看下面的事例public partial class PageExceptionTest:,protected void Page_Load(object sender,EventArgs e),BuggyMethod();,private void BuggyMethod(),/Deliberately throw an exception to simulate,/uncaught exception,throw new ApplicationException(,Your buggy code caused an exception.);,private void Page_Error(object sender,EventArgs e),Exception ex=Server.GetLastError();,Response.Write(An error has occurred);,Response.Write(+ex.Message+);,Response.Write(+ex.StackTrace+);,Context.ClearError();/,防止缺省错误页面显示,Page_Error,中不允许使用控件,所以只能使用,Response.Write,输出数据。

      通常不使用Page_Error事件处理器,一般使用Application_Error处理器,它属于应用程序一级,比页面级更有优势四、应用程序级的异常处理,有两种方法:,使用,Application_Error,处理器,使用错误页面重定向,1.,使用,Application_Error,处理器,Application_Error,处理器比,Page_Error,更有优势,它能处理所有页面级的错误需要说明的是,,Application_Error,处理器定义在,Global.asax,文件中(可通过添加全局应用程序类添加)下面例子把接收到的任何异常输出到,Windows Event Log,,可通过事件查看器浏览void Application_Error(object sender,EventArgs e),string msg=Url +Request.Path+Error:+Server.GetLastError().ToString();,try,/create the WebErrors event source if we need to,string logName=WebErrors;,if(!EventLog.SourceExists(logName),EventLog.CreateEventSource(logName,logName);,/add a new error event to the log,EventLog log=new EventLog();,log.Source=logName;,log.WriteEntry(msg,EventLogEntryType.Error);,catch(Exception ex),/not much we can do with this except output it to debugger,Debug.WriteLine(ex.Message);,也可以把错误形成邮件发送到指定的邮件中或把信息记录到自定义文件中。

      见教材P1802.使用自定义错误页面,如果在,Page_Error,和,Application_Error,中不使用,Context.ClearError,方法,则错误会重定向到缺省的错误页面错误的页面在开发环境和非开发环境下是不同的,开发环境下可以看到错误的详细信息也可以将错误页面重定向到一个自定义的页面,这需要修改配置文件5.2 使用验证服务器控件,验证控件用来测试用户的输入并设置输入是否通过测试的属性验证控件需要引用页面上其他的输入控件在用户输入时,,ASP.NET,页框架将用户输入传递到一个或多个适当的验证控件,由验证控件对输入的信息进行验证ASP.NET,提供了五种基本的验证类型控件和一个验证总结控件,(ValidationSummary),,它们分别由不同的验证控件来实现验证控件,控件名称,说明,RequiredFieldValidator,确保输入控件的值不为空,即必须输入了数据,CompareValidator,使用比较运算符(小于、等于、大于等)将用户的输入与另一控件的常数值或属性值进行比较RangeValidator,检查用户的输入是否在指定的上下边界之间可以检查数字、字母或日期对内的范围。

      可以将边界表示为常数RegularExpressionValidator,检查输入是否与正则表达式定义的模式匹配该验证类型允许检查可预知的字符序列,如社会保障号、电子邮件地址、号码、邮政编码等中的字符序列CustomValidator,使用您自己编写的验证逻辑检查用户的输入ValidationSummary,以摘要的形式显示页上所有验证程序的验证错误下面展示了,RequiredFieldValidator,控件的使用,其中两个重要属性,ControlToValidate,用来建立关联,,Text,显示错误提示一、表单验证过程,表单数据的验证包括客户端验证和服务器端验证,客户端验证:浏览器通过本地,JavaScript,脚本进行验证,不需要与服务器交互,减少往返时间服务器端验证:有些验证必须在服务器端进行,因为需要与服务器上的数据进行比较两种验证不是绝对分开的有时因为客户端不支持,客户端验证可能行不通,另外也存在一定的风险(存在脚本漏洞)所以服务器端验证会更加安全1.,客户端验证过程,客户端验证就是验证的程序是在客户端执行,即控件转换成相关的,HTML,元素和一些,JavaScript,程序,例如,RequiredFieldValidator,控件转换后会有许多,JavaScript,代码。

      见实例:,ValidationSample.aspx,UsingRequired.aspx,可通过在浏览器查看源代码,观察生成的,JavaScript,代码2.,服务器端验证过程,服务器端的验证需要在服务器端编写相关验证程序有时除了控件本身的验证以外,还需要编写一定的程序进行数据的检查,例如和数据库内容的匹配比较,检查用户名是否已注册等见第,5,章实例:,DisableClientValidation.aspx,注意:,Page.IsValid,是页面的属性,当为,tue,时,说明客户端控件合法,即验证控件验证通过3.常用验证属性,ControlToValidate,:控件,ID,Display,:错误消息的显示行为可能的值是:,None,(,不显示验证消息,),Static,(,占用固定的空间并显示错误消息,),Dynamic,(,只有当有错误消息时分配空间并显示消息,).,缺省值是,Static,.,EnableClientScript,:指示客户端验证是否可用,.,缺省值是,true,.,Enabled,:验证控件是否可用,ErrorMessage,:验证失效,将要显示在,ValidationSummary,控件中的错误消息文本,.,ForeColor,:验证实效,将要显示错误文本的颜色。

      缺省为,Color.Red,.,IsValid,:验证失效是否传递它的验证检查,一般通过程序检验时设置SetFocusOnError,:验证失败,焦点是否移动到相关控件缺省为,false,.,Text,:验证失败时显示的错误信息,.,ValidationGroup,:指定验证控件所属的验证组的名字,.,二、,RequiredFieldValidator,控件,RequiredFieldValidator,控件用于在,Web,窗体页面上保证用户非空输入,即对必填数据项已输入数据而不会跳过相关属性:,ControlToValidate,属性:设置相关联控件Display,属性:。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.