在没有发生异常的时候try catch 是不会影响系统性能的

时间:2022-05-16 02:45:43

异常措置惩罚惩罚原则和建议

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关键字:当问题呈现时,措施抛出一个异常。