在C#中,finally
块用于在try
块中的代码执行完毕后,无论是否发生异常,始终执行某些清理操作。它通常与try
和catch
块一起使用。finally
块是可选的,但它必须跟在try
块或try-catch
块之后。finally
块中的代码无论是否有异常抛出都会执行,因此常用于释放资源,例如关闭文件、释放内存等。
以下是一个示例:
try
{
// 可能抛出异常的代码
}
catch (Exception ex)
{
// 处理异常的代码
}
finally
{
// 始终执行的清理代码
}
在这个结构中:
try
块包含可能会引发异常的代码。catch
块用于捕获和处理异常。finally
块包含需要始终执行的代码,无论是否发生异常。
虽然finally
块通常与try
块一起使用,但如果没有任何资源需要清理或者其他必须执行的操作,那么可以不使用finally
块。
try 和 catch 还有finally语句
public int Add(string arg1,string arg2)
{
int a=0;
int b=0;
bool hasError =false;
try
{
a=int.Parse(arg1);
b=int.Parse(arg2);
}
catch(ArgumentNullException ane)
{
Console.WriteLine(ane.Message);
hasError=true;
}
catch(FormatException fe)
{
Console.WriteLine(FormatException fe);
hasError=true;
}
catch(OverflowException oe)
{
Console.WriteLine(oe.Message);
hasError=true;
}
finally //就算前面出现异常,finally里面的语句也会执行,可以用来释放系统资源。
{
if(hasError)
{
Console.WriteLine("Execution has error!");
}
else
{
Console.WriteLine("Done!"); //可以用来确定是正确输出或是错误输出
}
}
int result= a+b;
return result;
}