行业信息网站,wordpress 拖拽排序,wordpress图片暗箱,室内设计家装设计异常类
.NET Framework 类库中的所有异常都派生于 Exception 类#xff0c;异常包括系统异常和应用异常。
默认所有系统异常派生于 System.SystemException#xff0c;所有的应用程序异常派生于 System.ApplicationException。
系统异常一般不可预测#xff0c;比如内存堆…异常类
.NET Framework 类库中的所有异常都派生于 Exception 类异常包括系统异常和应用异常。
默认所有系统异常派生于 System.SystemException所有的应用程序异常派生于 System.ApplicationException。
系统异常一般不可预测比如内存堆栈溢出空对象引用权限限制硬件读取错误等等。
应用程序异常一般可以预测比如文件对象找不到啦值不在范围内啦数据类型不一致等等设计处理逻辑可以判断的。 常见的系统异常类 说明
System.OutOfMemoryException 用 new 分配内存失败
System.StackOverflowException 递归过多、过深
System.NullReferenceException 对象为空
Syetem.IndexOutOfRangeException 数组越界
System.ArithmaticException 算术操作异常的基类
System.DivideByZeroException 除零错误
System.IO.IOException IO操作期间发生错误时引发的异常
System.Net.WebException 此异常与网络有关
System.Data.SqlClient.SqlException 异常与数据库特别是SQLServer有关
System.InvalidCastException 由于未定义强制类型转换而无法从一种类型转换为另一种类型时将引发该错误 在 C# 语言中异常与异常处理语句 try ... catch... finally try
用于检查发生的异常并帮助发送任何可能的异常。 catch
以控制权更大的方式处理错误可以有多个 catch 子句。
可将具有不同异常类的多个 catch 块链接在一起。 代码中 catch 块的计算顺序为从上到下但针对引发的每个异常仅执行一个 catch 块。 将执行指定所引发的异常的确切类型或基类的第一个 catch 块。 如果没有 catch 块指定匹配的异常类则将选择不具有类型的 catch 块如果语句中存在。 务必首先定位具有最具体的即最底层派生的异常类的 catch 块。
可以省略不使用。但catch 和finally 至少有一个。 finally
无论是否引发了异常finally 的代码块都将被执行。
可以省略不使用。但catch 和finally 至少有一个。
finally 块可用于发布资源如文件流、数据库连接和图形句柄而无需等待运行时中的垃圾回收器来完成对象。 throw
异常都是使用 throw 关键字创建而成。当需要抛出一个异常时或者自定义异常可以用 throw 关键字.
string first args.Length 1 ? args[0] : throw new ArgumentException(Please supply at least one argument.); 异常过滤器
指定异常筛选器该筛选器进一步检查异常并确定相应的 catch 块是否处理该异常。 异常筛选器是遵循 when 关键字的布尔表达式。布尔表达式为true,catch块就处理异常。布尔表达式为false,就跳过该异常。
try
{ var result Process(-3, 4); Console.WriteLine($Processing succeeded: {result});
}
catch (Exception e) when (e is ArgumentException || e is DivideByZeroException)
{ Console.WriteLine($Processing failed: {e.Message});
}
自定义异常 class MyException : Exception { public MyException(string message) : base(message) { }
}
string first args.Length 1 ? args[0] : throw new MyException(Please supply at least one argument.); 注意
较高层次上下文捕捉较低抛出的异常。
try
{ // Code to try goes here.
}
catch (SomeSpecificException ex)
{
// Code to handle the exception goes here. }
Finally {
// Code to execute after the try (and possibly catch) blocks // goes here. } 如
FileStream? file null;
FileInfo fileinfo new System.IO.FileInfo(./file.txt); Try {
file fileinfo.OpenWrite(); file.WriteByte(0xF);
}
finally
{ // Check for null because OpenWrite might have failed.
file?.Close();
}