class Exce
{
static void Main()
{
try
{
Console.WriteLine("Executing the try statement.");
throw new NullReferenceException();
}
catch (NullReferenceException e)
{
Console.WriteLine(" Caught exception #1.");
}
finally
{
Console.WriteLine("Executing finally block.");
}
}
}
在try_catch_finally这个结构中,finally语句如果去掉的话, Console.WriteLine("Executing finally block.");这句都会执行的,那么
finally语句到底有什么作用。
{
static void Main()
{
try
{
Console.WriteLine("Executing the try statement.");
throw new NullReferenceException();
}
catch (NullReferenceException e)
{
Console.WriteLine(" Caught exception #1.");
}
finally
{
Console.WriteLine("Executing finally block.");
}
}
}
在try_catch_finally这个结构中,finally语句如果去掉的话, Console.WriteLine("Executing finally block.");这句都会执行的,那么
finally语句到底有什么作用。
finally通常用来做后事处理.就是说如果真的出错了,就执行finally里面的句子..从而使系统稳健~~
要是catch 块中再有异常抛出...
finally 块一样会执行.要是没没finally ,catch 块中抛出异常,catch后面的语句就不能执行了..
1、有 finally 块的代码 Console.WriteLine("Executing finally block.");始终要执行,只有执行完 Console.WriteLine("Executing finally block.");才真正返回;
2、没有 finally 块的代码,则在遇到 return 时就返回了。
所以,finally 块可以增强系统的稳定性,一般在此处放置的代码一般是系统资源的释放工作。
比如:
IDBWrapper dbWrapper = GetDBWrapper();
try
{
dbWrapper.Open();
dbWrapper.BeginTrains();// somethingsdbWrapper.CommitTrains();
}
catch(Exception exp)
{
// 记录错误日志
}
finally
{
if (ConnectionState.Closed != dbWrapper.State)
{
// 关闭数据库联接
dbWrapper.Close();
}
}
try
{
....
}
catch
{
.....
}
finally
{
}
如果在try中和catch中出现了return语句,那么先执行finally块中的语句后返回,如果去掉了finally后就不执行了