1. 捕获异常
try:程序的正常操作部分
catch:处理各种错误情况,这些情况是执行try块中的代码遇到的,用于记录错误
finally: 包含清理资源或执行通常的try或catch块末尾执行的其他操作,无论是否抛出异常,都会执行finally,只要有finally块,它里面的代码一定会被执行
throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成
1. 可以省略finally块,因为它是可选的
2. 可以提供任意多个catch块,处理不同的错误,包含太多也不行,降低程序性能
3. 可以在catch块定义过滤器,和过滤器匹配时,捕获特定块中的异常
4. 可以省略catch块
5. Exception是所有错误的基类
6. 用户可以自定义异常类,使用时就像Exception类使用方法一样(把自定义的对象当普通对象用)
try
{
//
if(Overflow == true)
{
//抛出一个异常
throw new OverflowException();
}
}
catch(OverflowException ex)
{
//
}
catch(IndexOutOfRangeException ex)
{
//
}
catch(Exception ex)
{
}
finally
{
}
1.1 异常过滤器
用异常过滤器可以更精确的捕捉错误
//当ex等于Overflow时,才捕获这个错误
catch(OverflowException ex) when (ex.Equals(Overflow))
{
//
}
2. 调用者信息
using System.Runtime.CompilerServices;
public void LogInfo([CallerLineNumber] int line = -1, [CallerFilePath] string path = null, [CallerMemberName] string name = null)
{
}