异常措置惩罚惩罚原则和建议
SystemException类担任Exception,前者是System定名空间中所有其他异常类的基类,在捕获异常的时候,我首先检察的就是Exception东西信息。Exception重要成员如下图
这里写图片描述
1.Message属性:孕育产生异常原因的错误动静
[__DynamicallyInvokable] public virtual string Message { [__DynamicallyInvokable] get { if (this._message != null) { return this._message; } if (this._className == null) { this._className = this.GetClassName(); } return Environment.GetRuntimeResourceString("Exception_WasThrown", new object[] { this._className }); } }
Message属性是只读属性,GetRuntimeResourceString是获取运行时资源字符串。返回的字符串是孕育产生异常原因的错误动静或者空字符串。
2.Data:的其他异常信息的键/值对的调集
public virtual IDictionary Data {
get{
if (_data == null)
if(IsImmutableAgileException(this))
_data = new EmptyReadOnlyDictionaryInternal();
else
_data = new ListDictionaryInternal();
return _data;
}
}
3.StackTrace:呈现异常之前挪用的要领名称和签名
public static string StackTrace { [SecuritySafeCritical] get { new EnvironmentPermission(PermissionState.Unrestricted).Demand(); return GetStackTrace(null, true); } }
4.Source属性:包罗生成异常的应用措施或东西的名称
5.TargetSite属性:引发当前异常的要领
6.GetBaseException要领 :返回System.Exception,它是所有异常类的“基”类。
常见的异常类
异常类型有很多,他们都是担任自SystemException,这些异常类型概略分为以下这几种1.与数组调集有关2.与成员访谒有关3.与参数有关4.与算术相关5.IO相关6.固然还有其他的一些异常。
1.与数组调集有关
IndexOutOfRangeException类:索引超过范畴引发的异常
ArrayTypeMismatchException类:数组调集存储数据类型不正确引发的异常
RankException类:措置惩罚惩罚维数错误引发的异常
2.IO有关的异常
与IO相关的异常都担任自IOException类,该类用于措置惩罚惩罚进行文件输入输出操纵时所引发的异常,IOException类的5个直接派生类如下。
DirectoryNotFoundException类:没有找到指定的目录而引发的异常。
FileNotFoundException类:没有找到文件而引发的异常。
EndOfStreamException类:措置惩罚惩罚已经达到流的末尾而还要继续读数据而引发的异常。
FileLoadException类:无法加载文件而引发的异常。
PathTooLongException类:文件名太长而引发的异常。
3.成员访谒有关的异常
与成员访谒相关的异常都担任自MemberAccessException这个类,它担任自SystemException。
FileAccessException:访谒字段成员掉败所引发的异常
MethodAccessException:访谒要领成员掉败引发异常
MissingMemberException:成员不存在引发的异常
4.参数相关的异常
与参数有关的异常类ArgumentException都担任自SystemException,措置惩罚惩罚给要领成员通报参数时产生异常
ArgumentOutOfRangeException:当一个参数不在给定范畴内引发的异常
ArgumentNullException:参数为null(不允许null)的情况下引发的异常
5..与算术相关
ArithmeticException异常类用于措置惩罚惩罚与算术相关的异常,它的相关子类如下
DivideByZeroException:整数十进制试图除以0引发的异常(被除数不能为0)
NotFiniteNumberException:浮点数运算中呈现无穷大或非负值引发的异常
6.其他异常
NullReferenceException:当一个东西没有实例化时并引用引发的异常
InvalidOperationException:当对要领的挪用东西当前状态无效时引发异常
InvalidCastException:措置惩罚惩罚类型转换期间引发的异常
OutOfMemoryException:措置惩罚惩罚内存不敷引发的异常
*Exception:措置惩罚惩罚栈溢出引发的错误
c#*给try 和catch块供给了一种布局化的异常措置惩罚惩罚方案,所有可能呈现的异常都必需得到妥善的措置惩罚惩罚,try catch自己并不会影响系统的性能,在没有产生异常的时候try catch 是不会影响系统性能的。受影响的时候是产生异常的时候。
关键字 try catch finally。先执行try里面的语句,如果抛出异常就会被catch捕获。无论出不呈现异常城市执行finally里面的语句。此外不常用的throw关键字:当问题呈现时,措施抛出一个异常。