报名网站建设价格,上海地区网站开发公司,东莞外贸企业做网站,ssh架构jsp网站开发throw语句是我们手动引发异常的一个语句。
在程序执行过程中#xff0c;当某些条件不符合我们的要求时#xff0c;那么我们就可以使用throw语句手动抛出异常#xff0c;那么就可以在异常发生的地方终止当前代码块的执行#xff0c;此时我们就可以把控制权传递给调用堆栈中…throw语句是我们手动引发异常的一个语句。
在程序执行过程中当某些条件不符合我们的要求时那么我们就可以使用throw语句手动抛出异常那么就可以在异常发生的地方终止当前代码块的执行此时我们就可以把控制权传递给调用堆栈中的异常处理程序如try-cath语句块。
通常我们可以抛出以下一些异常
1、特定类的异常
throw可以抛出派生自System.Exception类的异常如
throw new ArgumentException(错误值);
这里就是抛出了个ArgumentException异常。
2、自定义异常自然可以抛出System.Exception类的异常那么我们可以通过继承该类进行自定义的异常类定义。这样能然我们更灵活地处理异常。如自定义如下异常类
public class CustomException : Exception
{public CustomException(string message) : base(message){// 可以在构造函数中进行额外的初始化操作}
}使用
throw new CustomException(出现异常了);
3、重新抛出异常我们可以使用throw语句重新抛出异常然后就可以把异常传递给上层的异常处理程序。这在我们程序具有多层的处理逻辑每层都有不同的处理方法时是非常有用的。
class Program
{static void Main(){try{DoSomething();}catch (Exception ex){Console.WriteLine(在Main中引发错误: ex.Message);}Console.ReadLine();}static void DoSomething(){try{// 模拟一个可能引发异常的操作SimExc();}catch (Exception ex){Console.WriteLine(在DoSomething方法中引发错误: ex.Message);throw; // 重新抛出当前异常}}static void SimExc(){int result 10 / 0; // 这里会引发一个除以零的异常}
}这里就通过throw语句重新抛出异常并把异常重新传回给main里面的异常处理块。
4、在C#7.0之后引入了throw表达式它允许我们在条件表达式中抛出异常。官方的解析说这对提高代码可读性有利。如
int value GetValue();
string result value ! 0 ? Valid : throw new ArgumentException(错误值);、//表达式true则赋值给Valid,否则抛出异常。