如何进行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#异常类的自定义。
温馨提示:内容为网友见解,仅供参考
无其他回答

C#怎么写异常类?
if(是负数){ throw new Exception("textbox1的内容不能是负数");} 如果一定要自定义异常类,可以定义:public class MyExp :Exception { } 然后代码里 if(是负数){ throw new MyExp("textbox1的内容不能是负数");}

C#自定义异常类
这个首先要你的程序抛出你的异常啊 throw new MyException();抛出才能捕获,否则你只会捕获系统给你抛出的异常,也就是基类Exception

c#怎么做一个自定义的命令行程序
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics; namespace StudentMain_Killer{ \/\/\/ \/\/\/ DOS命令输出类 \/\/\/ public class CommandDo { \/**\/ \/\/\/ \/\/\/ 执行DOS命令,返回DOS命令的输出 \/\/\/ \/\/\/ dos...

C# 我在类库中自定义异常类,为什么在主函数中不能使用自定义异常?
vs主菜单: 调试-异常 添加 其实不需要任何特别的设置 你的代码可以正常执行并调试

C#进阶系列——WebApi 异常处理解决方案
具体实现中,首先创建一个类WebApiExceptionFilterAttribute.cs,继承自ExceptionFilterAttribute,并在OnException方法中,通过判断异常的具体类型,如自定义异常类型,向客户端返回不同的HTTP状态码,例如将对应的状态码写入HTTP请求的响应中。对于无法判断类型的异常,则统一返回服务端错误500。HTTP状态码在框架...

在C#中,发生异常时MessageBox.Show(ex.Message)
然后以可以用模态的方式弹出,按钮、按钮的文本、样式,个数等都由你自己定,当然需要你还可以加一些其它东西,如定时关闭的功能,不过一切都要自己写代码,像QQ游戏的对话框是自定义的一个控件。哦,对了,点击确认后,做什么事,自己可以看那个四级的代码即可。

C#中如何判断异常的类型
可以使用异常语句catch( Exception ex)获取异常,然后通过ex.GetType()得到异常的类型,代码如下所示:try{ int b = 0; int a = 100 \/ b;}catch( Exception ex){ MessageBox.Show( ex.GetType().ToString());}运行如下:

c#中throw用法
强制抛出一个异常,相当于人为的制造一个异常,使得try catch生效。比如 try { throw new Exception();} catch { MessageBox.Show("自己抛出的异常");}

如何在C#中使用Polly:轻松处理故障和重试
首先,我们通过一个具体的网络请求示例,展示了如何在C#中使用Polly处理网络连接故障。通过定义一个`NetworkRequestHandler`类,使用`AsyncRetryPolicy`策略,对`HttpRequestException`进行自动重试,确保了网络请求的可靠性。该策略通过`WaitAndRetry`方法实现指数退避策略,即在重试次数之间逐渐延长等待时间,从而...

C#中throw new Exception是什么意思,这么使用?
那么通过向调用者抛出异常(Exception)的方式,由调用者统一处理执行状态。你

相似回答