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

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

专业领域包括成都做网站、网站制作、商城网站定制开发、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,创新互联的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。

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

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

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

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

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

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

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

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

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

 
 
 
  1. private void AddCustomerRecord()         
  2.  
  3.  {              
  4.  
  5. SqlConnection cn = new SqlConnection(DBConn);              
  6.  
  7. cn.Open();              
  8.  
  9.  try              
  10.  
  11. {                  
  12.  
  13. SqlCommand com = new SqlCommand("Insert Into Customers (CustomerID,CompanyName,ContactName) Values ('"+ftxt_CustomerID.Text+"','"+ftxt_CompanyName.Text+"','"+ftxt_ContactName.Text+"')",cn);                  
  14.  
  15. com.ExecuteNonQuery();              
  16.  
  17. }             
  18.  
  19.  catch(SqlException ex)              
  20.  
  21. {                 
  22.  
  23.  if(ex.Number == 2627)                  
  24.  
  25. {                     
  26.  
  27.  throw new DuplicateCustomerIDException("CustomerID重复",ex);                  
  28.  
  29. }                  
  30.  
  31. else                 
  32.  
  33.  {                      
  34.  
  35. MessageBox.Show("成功","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1,MessageBoxOptions.DefaultDesktopOnly);                 
  36.  
  37.  }             
  38.  
  39.  }             
  40.  
  41.  finally             
  42.  
  43.  {                  
  44.  
  45. cn.Close();              
  46.  
  47. }         
  48.  
  49.  }  

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

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

   
   
   
  1. private void fbtn_Submit_Click(object sender, System.EventArgs e)            
  2.  
  3. {                
  4.  
  5. try                
  6.  
  7. {                  
  8.  
  9.   AddCustomerRecord();               
  10.  
  11.  }                
  12.  
  13. catch(DuplicateCustomerIDException ex)              
  14.  
  15.   {                    
  16.  
  17. MessageBox.Show(ex.Message);                
  18.  
  19. }            
  20.  
  21. }   

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

            

分享题目:如何进行C#异常类的自定义
文章源于:http://www.csdahua.cn/qtweb/news36/213336.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网