### 异常处理语句

#### 1．try-catch 语句

try-catch 语句由一个 try 块后跟一个或多个 catch 子句构成，这些子句指定不同的异常处理程序。

try 块包含可能导致异常的保护代码。该块一直执行到引发异常或成功完成为止。

catch 子句使用时可以不带任何参数，这种情况下它捕获任何类型的异常，并被称为一般 catch 子句。它还可以接受从 System.Exception 派生的对象参数，这种情况下它处理特定的异常。例如：

try

{

// 除数不能为 0

int x = 0;

float y = 123/x;

}

catch(ArithmeticException ee)

{

//获取描述当前异常的消息

Console.WriteLine(ee.Message);

}

执行代码输出结果为：试图除以 0。

注意：try 块后跟多个 catch 子句时，catch 块的顺序很重要，因为会按顺序检查 catch 子句。将先捕获特定程度较高的异常，然后捕获特定程度较小的异常。

#### 2．try-finally 语句

finally 块用于清除 try 块中分配的任何资源，以及运行任何即使在发生异常时也必须执行的代码。控制总是传递给 finally 块，与 try 块的退出方式无关。

catch 用于处理语句块中出现的异常，而 finally 用于保证代码语句块的执行，与前面的 try 块的退出方式无关。例如：

int x = 0;

try

{

// 除数不能为 0

float y = 123 / x;

}

finally

{

Console.Write(x);

}

此段代码虽然引发了异常，但 finally 块中的输出语句仍会执行。即：0。

#### 3．try-catch-finally 语句

通常 try 块、catch 块和 finally 块是一起使用的。在 try 块中获取并使用资源，在 catch 块中处理异常情况，并在 finally 块中释放资源。

#### 4．throw 语句

throw 语句用于立即无条件的引发异常，控制永远不会到达紧跟在 throw 后面的语句。通常 throw 语句与 try-catch 或 try-finally 语句一起使用。当引发异常时，程序查找处理此异常的 catch 语句。