C# return和finally的运行顺序求解
发布网友
发布时间:2024-05-11 16:14
我来回答
共3个回答
热心网友
时间:2024-05-11 21:31
finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码。控制总是传递给 finally 块,与 try 块的退出方式无关。
下面给个例子你看就明白了:
// try-finally
using System;
public class MainClass
{
static void Main()
{
int i = 123;
string s = "Some string";
object o = s;
try
{
// Invalid conversion; o contains a string not an int
i = (int)o;
}
finally
{
Console.Write("i = {0}", i);
}
}
}
上面的示例将导致引发 System.InvalidCastException。尽管捕捉了异常,但仍会执行 finally 块中包含的输出语句,即:i = 123 。
也就是说:在此例中,有一个导致异常的无效转换语句。当运行程序时,您收到一条运行时错误信息,但 finally 子句仍继续执行并显示输出。
catch 用于处理语句块中出现的异常,当出现异常的时候,return会执行,同时finally也会执行。
热心网友
时间:2024-05-11 21:32
会,finally不管有没有错都会运行
热心网友
时间:2024-05-11 21:32
俺错了