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)