C# throw new Exception的使用

16 篇文章 1 订阅

  在使用三层或七层架构来敲系统的时候,常常需要判断多个条件,因此可能一个方法里面需要返回不同的提示消息,这时:使用throw 和 try catch来处理。

第一步:不管在哪一层(不是U层就行,因为U层就直接用MessageBox提示了)

//在B层随便写个
if(条件1成立)
{
	throw new Exception("条件1提示"); 
}
if(条件2成立)
{
	throw new Exception("条件2提示");
}

第二步:在U层添加如下代码

//在U层将调用的方法,包起来  如果try的内容有throw,就会在catch里抓出来
try
{
	//调用三层或七层的方法
}
catch (Exception ex)
{
	MessageBox.Show(ex.Message);
	return;   //停止向下运行
}

  throw是我们自己“扔”出的错误,它会一直往外扔,直到扔到最顶层的开始调用部分,比如,从U层调用了一个方法,经过了B层,在D层中写了个throw new Exception(“我是D层”),它就会一层层扔回,直到U层,我们需要用try catch做处理,不然它就报错了,处理的方法就是第二步的代码,将错误用提示框弹出来。
  使用心得:当执行了throw语句,它就不会继续向下执行,而是直接返回了,所以如果我们成功的运行到了该语句的下一条语句,就说明我们操作成功了,不用在添加判断,来提示是否成功。比如还是上面第一步的代码,添加一行语句:

if(条件1成立)
{
	throw new Exception("条件1提示"); 
}
if(条件2成立)
{
	throw new Exception("条件2提示");
}

如果条件1成立了,那么就在条件1的if语句中返回了,不会执行到条件2。

  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
C#中,我们可以通过自定义异常类来处理应用程序中可能出现的异常情况。自定义异常类需要继承自`System.Exception`类。 以下是一个简单的自定义异常类的实现示例: ```csharp public class MyException : Exception { public MyException() { } public MyException(string message) : base(message) { } public MyException(string message, Exception innerException) : base(message, innerException) { } } ``` 在上面的代码中,我们定义了一个名为`MyException`的自定义异常类。该类继承自`System.Exception`类,并提供了三个构造函数。第一个构造函数是默认的构造函数,第二个构造函数接受一个字符串参数,用于指定异常消息,第三个构造函数接受两个参数,第一个参数是异常消息,第二个参数是内部异常。 通过自定义异常类,我们可以在应用程序中抛出符合我们需求的异常,这样可以更好地处理应用程序中可能出现的异常情况。以下是一个示例: ```csharp public class MyClass { public void DoSomething(int input) { if (input < 0) { throw new MyException("Input cannot be negative."); } } } class Program { static void Main(string[] args) { MyClass myClass = new MyClass(); try { myClass.DoSomething(-1); } catch (MyException ex) { Console.WriteLine(ex.Message); } } } ``` 在上面的代码中,我们在`MyClass`类的`DoSomething`方法中检查输入是否为负数,如果是负数,则抛出`MyException`异常。在`Main`方法中,我们捕获了`MyException`异常,并输出了异常消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值