猿教程 Logo

C# 异常

应用程序可能在执行期间遇到错误。 当发生错误时,CLR或程序代码会抛出包含错误必要信息的异常。 .Net中有两种类型的异常,由执行程序生成的异常和由CLR生成的异常。

C#包括每个可能的异常的内置类。 所有的异常类都直接或间接从异常类派生。 有两个主要的异常类 - SystemException和ApplicationException。 SystemException是所有CLR生成的错误的基类,而ApplicationException用作所有与应用程序相关的异常的基类,您希望在业务规则违例上引发异常。

以下是.Net中的一些异常类的层次结构:


如上图所示,SystemException类是在程序执行期间可能发生的所有异常的基类。 默认情况下没有其他类派生ApplicationException类,因为你作为程序员需要派生这个类根据业务规则创建自己的exeception类。

下图显示了当在运行时访问空对象的属性时,如何在Visual Studio调试模式下抛出NullReferenceException:



重要的Exception

下表列出了.Net中可用的重要异常类。

异常类描述
ArgumentException传递给方法的非空参数无效时引发。
ArgumentNullException将null参数传递给方法时引发。
ArgumentOutOfRangeException当参数的值超出有效值范围时引发。
DivideByZeroException当整数值除以零时引发。
FileNotFoundException在物理文件在指定位置不存在时引发。
FormatException值不是由转换方法(例如,Parse)从字符串转换的适当格式时引发。
IndexOutOfRangeException当数组索引超出数组或集合的下限或上限时触发。
InvalidOperationException当对象的当前状态中的方法调用无效时触发。
InvalidCastException在转换不兼容类型时引发。
KeyNotFoundException在用于访问集合中的成员的指定键不存在时触发。
NotSupportedException当不支持方法或操作时引发。
NullReferenceException当程序访问空对象的成员时引发。
OverflowException当算术,强制转换或转换操作导致溢出时触发。
OutOfMemoryException当程序未获得足够的内存来执行代码时引发。
StackOverflowException当内存中的堆栈溢出时引发。
TimeoutException分配给操作的时间间隔已过期。

Exception类

.Net中的每个异常类都派生自基本的Exception类。 它包括以下重要属性,您可以使用它们在处理异常时获取有关异常的信息。

属性描述
Message 提供有关异常原因的详细信息。
StackTrace提供有关错误发生位置的信息。
InnerException 提供有关可能发生的一系列异常的信息。
HelpLink此属性可以保存特定异常的帮助URL。
Data此属性可以保存键值对中的任意数据。
TargetSite提供抛出此异常的方法的名称。

当发生错误时,应用程序代码或默认处理程序处理该异常。 在下一节中了解如何处理异常。

重点
  1. 异常是C#中任何类型的异常类的基类。

  2. 异常类型:SystemException和ApplicationException。

  3. SystemException类用于CLR相关的运行时错误。

  4. 异常类包括重要属性,例如Message,StackTrack,InnerException,数据等,以便将重要信息与每个异常相关联。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CSharp/Csharp-Exception.html