C#尝试,抓住,最后,扔
示例
try,,catch和finally,并throw允许您处理代码中的异常。
var processor = new InputProcessor();
//try块中的代码将被执行。如果在执行过程中发生异常
//此代码,执行将传递到与异常类型相对应的catch块。
try
{
processor.Process(input);
}
//如果在try块期间抛出FormatException,则此catch块
//将被执行。
catch (FormatException ex)
{
//Throw是一个关键字,它将手动引发异常,从而触发任何
//等待那个异常类型。
throw new InvalidOperationException("Invalid input", ex);
}
//catch可用于捕获所有或任何特定的异常。这个捕获块
//没有指定类型,则捕获尚未捕获的任何异常
//在先前的捕获块中。
catch
{
LogUnexpectedException();
throw; //重新引发原始异常。
}
//在所有try-catch块都执行完之后,将执行finally块。尝试之后
//成功运行所有命令或捕获了所有异常之后。
finally
{
processor.Dispose();
}注:该return关键字可以用在try块,和finally(只返回前)块仍将执行。例如:
try
{
connection.Open();
return connection.Get(query);
}
finally
{
connection.Close();
}该语句将在返回结果之前执行。connection.Close()connection.Get(query)