嘗試抓住最後扔
try
,catch
,finally
和 throw
允許你處理程式碼中的異常。
var processor = new InputProcessor();
// The code within the try block will be executed. If an exception occurs during execution of
// this code, execution will pass to the catch block corresponding to the exception type.
try
{
processor.Process(input);
}
// If a FormatException is thrown during the try block, then this catch block
// will be executed.
catch (FormatException ex)
{
// Throw is a keyword that will manually throw an exception, triggering any catch block that is
// waiting for that exception type.
throw new InvalidOperationException("Invalid input", ex);
}
// catch can be used to catch all or any specific exceptions. This catch block,
// with no type specified, catches any exception that hasn't already been caught
// in a prior catch block.
catch
{
LogUnexpectedException();
throw; // Re-throws the original exception.
}
// The finally block is executed after all try-catch blocks have been; either after the try has
// succeeded in running all commands or after all exceptions have been caught.
finally
{
processor.Dispose();
}
注意: return
關鍵字可以在 try
塊中使用,finally
塊仍然會被執行(就在返回之前)。例如:
try
{
connection.Open();
return connection.Get(query);
}
finally
{
connection.Close();
}
宣告 connection.Close()
將在返回 connection.Get(query)
的結果之前執行。