网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

如何进行C#异常类的自定义

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

首先我们建立自己的C#异常类 CustomException,它要继承自ApplicationException类(这是一个在发生非致命的应用程序错误时抛出的通用异常,它又继承于更为通用的Exception类),将其用作为应用程序定义的任何自定义异常的基类。通过这个基类,我们就可以编写一个通用的catch代码块,捕获应用程序定义的任何自定义异常类型。

自定义的异常类型可以在这中间扮演一个非常重要的角色。我们可以捕获一个通用的异常,识别它和应用程序的关系,然后把它作为特定于应用程序的异常再次抛出,以便能适当地处理它。

这里构建了一个简单的场景,使用Northwind数据库,向其中添加一条Customer记录,如果ID重复则抛出相应的异常信息。

(1) 定义我们的基础异常类

  1. public class CustomException:ApplicationException       
  2. {        
  3.    public CustomException()      
  4.      {       
  5.   
  6.     }      
  7.       public CustomException(string message, Exception inner):base(message,inner)      
  8.      {     
  9.   
  10.       }   
  11.     }   

定义两个处理异常的方法,使用base关键字让CustomException方法继承自基本的错误异常类ApplicationException并提供了两个参数,一个异常消息参数和一个异常错误类。

(2) 然后我们再定一个处理我们不同自定义错误类型的错误处理类,不同的应用程序异常类型使用不同的异常处理类。

  1. public class DuplicateCustomerIDException : CustomException      
  2.  {         
  3.   public DuplicateCustomerIDException()          
  4.  {           
  5.   
  6. }           
  7. public DuplicateCustomerIDException(string message, Exception inner):base(message,inner)          
  8.  {          
  9.   
  10.  }      
  11.  }   

当出现相应类型的异常时,在这个自定义异常处理中可以在出现错误的时候做一系列的处理,然后再抛出异常信息,例如:记录错误日志,或者做容错处理等。

(3) 最后我们在添加客户记录的时候,使用我们自定义的C#异常类 

  1. private void AddCustomerRecord()          
  2.  {               
  3. SqlConnection cn = new SqlConnection(DBConn);               
  4. cn.Open();               
  5.  try               
  6. {                   
  7. SqlCommand com = new SqlCommand("Insert Into Customers (CustomerID,CompanyName,ContactName) Values ('"+ftxt_CustomerID.Text+"','"+ftxt_CompanyName.Text+"','"+ftxt_ContactName.Text+"')",cn);      
  8. com.ExecuteNonQuery();               
  9. }              
  10.  catch(SqlException ex)               
  11. {                  
  12.  if(ex.Number == 2627)                   
  13. {                      
  14.  throw new DuplicateCustomerIDException("CustomerID重复",ex);         
  15. }                   
  16. else                  
  17.  {                       
  18. MessageBox.Show("成功","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1,MessageBoxOptions.DefaultDesktopOnly);                  
  19.  }              
  20.  }              
  21.  finally              
  22.  {                   
  23. cn.Close();               
  24. }          
  25.  }   

其中的ex.Number == 2627就是由于数据表中主键重复不能添加重复主键的记录时抛出的异常号码,如果异常类型符合怎抛出我们自定义的异常处理类。

(4) 最后我们在调用这个方法时,编写代码捕获这个我们自定义类型的异常 

  1. private void fbtn_Submit_Click(object sender, System.EventArgs e)             
  2. {                 
  3. try                 
  4. {                   
  5.   AddCustomerRecord();                
  6.  }                 
  7. catch(DuplicateCustomerIDException ex)               
  8.   {                     
  9. MessageBox.Show(ex.Message);                 
  10. }             
  11. }    

以上就实现了C#异常类的自定义。

  • 上一篇资讯: C#Thread类的应用
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师