如何进行C#异常类的自定义
展开全部
(1) 定义我们的基础异常类
public class CustomException:ApplicationException { public CustomException() { } public CustomException(string message, Exception inner):base(message,inner) { } }
定义两个处理异常的方法,使用base关键字让CustomException方法继承自基本的错误异常类ApplicationException并提供了两个参数,一个异常消息参数和一个异常错误类。
(2) 然后我们再定一个处理我们不同自定义错误类型的错误处理类,不同的应用程序异常类型使用不同的异常处理类。
public class DuplicateCustomerIDException : CustomException { public DuplicateCustomerIDException() { } public DuplicateCustomerIDException(string message, Exception inner):base(message,inner) { } }
当出现相应类型的异常时,在这个自定义异常处理中可以在出现错误的时候做一系列的处理,然后再抛出异常信息,例如:记录错误日志,或者做容错处理等。
(3) 最后我们在添加客户记录的时候,使用我们自定义的C#异常类
private void AddCustomerRecord() { SqlConnection cn = new SqlConnection(DBConn); cn.Open(); try { SqlCommand com = new SqlCommand("Insert Into Customers (CustomerID,CompanyName,ContactName) Values ('"+ftxt_CustomerID.Text+"','"+ftxt_CompanyName.Text+"','"+ftxt_ContactName.Text+"')",cn); com.ExecuteNonQuery(); } catch(SqlException ex) { if(ex.Number == 2627) { throw new DuplicateCustomerIDException("CustomerID重复",ex); } else { MessageBox.Show("成功","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1,MessageBoxOptions.DefaultDesktopOnly); } } finally { cn.Close(); } }
其中的ex.Number == 2627就是由于数据表中主键重复不能添加重复主键的记录时抛出的异常号码,如果异常类型符合怎抛出我们自定义的异常处理类。
(4) 最后我们在调用这个方法时,编写代码捕获这个我们自定义类型的异常
private void fbtn_Submit_Click(object sender, System.EventArgs e) { try { AddCustomerRecord(); } catch(DuplicateCustomerIDException ex) { MessageBox.Show(ex.Message); } }
以上就实现了C#异常类的自定义。
public class CustomException:ApplicationException { public CustomException() { } public CustomException(string message, Exception inner):base(message,inner) { } }
定义两个处理异常的方法,使用base关键字让CustomException方法继承自基本的错误异常类ApplicationException并提供了两个参数,一个异常消息参数和一个异常错误类。
(2) 然后我们再定一个处理我们不同自定义错误类型的错误处理类,不同的应用程序异常类型使用不同的异常处理类。
public class DuplicateCustomerIDException : CustomException { public DuplicateCustomerIDException() { } public DuplicateCustomerIDException(string message, Exception inner):base(message,inner) { } }
当出现相应类型的异常时,在这个自定义异常处理中可以在出现错误的时候做一系列的处理,然后再抛出异常信息,例如:记录错误日志,或者做容错处理等。
(3) 最后我们在添加客户记录的时候,使用我们自定义的C#异常类
private void AddCustomerRecord() { SqlConnection cn = new SqlConnection(DBConn); cn.Open(); try { SqlCommand com = new SqlCommand("Insert Into Customers (CustomerID,CompanyName,ContactName) Values ('"+ftxt_CustomerID.Text+"','"+ftxt_CompanyName.Text+"','"+ftxt_ContactName.Text+"')",cn); com.ExecuteNonQuery(); } catch(SqlException ex) { if(ex.Number == 2627) { throw new DuplicateCustomerIDException("CustomerID重复",ex); } else { MessageBox.Show("成功","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1,MessageBoxOptions.DefaultDesktopOnly); } } finally { cn.Close(); } }
其中的ex.Number == 2627就是由于数据表中主键重复不能添加重复主键的记录时抛出的异常号码,如果异常类型符合怎抛出我们自定义的异常处理类。
(4) 最后我们在调用这个方法时,编写代码捕获这个我们自定义类型的异常
private void fbtn_Submit_Click(object sender, System.EventArgs e) { try { AddCustomerRecord(); } catch(DuplicateCustomerIDException ex) { MessageBox.Show(ex.Message); } }
以上就实现了C#异常类的自定义。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询