try-catch-finally是很常用的语法结构,用来控制可能发生异常时的程序流程,其中catch和finally至少要有一个。
1、将预见可能发生异常的代码包含在try语句块中
2、如果发生了异常,则转入catch的执行
catch有几种写法
- catch:这将捕获任何发生得异常。
- catch(Exception e)这将捕获任何发生的异常。另外,还提供e参数,你可以在处理异常时使用e参数来获得有关异常的信息。
- catch(Exception的派生类 e)这将捕获派生类定义的异常,比如,我想捕获一个无效操作的异常,可以这么写:
catch(InvalidOperationException e) {...};
这样,如果try语句块中抛出的异常时InvalidOperationException,将转入该处执行,其他异常不处理。
3.finally
finally可以没有,也可以只有一个。无论有没有发生异常,它总会在这个异常处理结构的最后运行。即使你在try块内用return返回了,在返回前,finally总是要执行的。这个以便让我们有机会能够在异常处理最后做一些清理工作,比如关闭数据库连接,关闭文档等。
注意:如果没有catch语句,那么finally语句就是必须的。如果你不希望在这里处理异常,而当异常发生时提交到上层处理。但在这个地方无论发生异常,都必须要执行一些操作,就可以使用try finally。很典型的就是进行数据库操作:
try
{
DataConnection.Open();
DataCommand.ExecuteReader();
...
return;
}
finally
{
DataConnection.Close();
}