C# Web 服务 - 返回然后最后 - 首先发生什么

本文关键字:什么 然后 Web 服务 返回 最后 | 更新日期: 2023-09-27 18:36:48

在C#.NET中,让我们以以下示例为例

[WebMethod]
public int TakeAction()
{
    try {
        //Call method A
        Return 1;
    } catch (Exception e) {
        //Call method B
        Return 0;
    } finally {
        //Call method C
    }
}

现在假设方法 C 是一个长时间运行的进程。

调用 TakeAction 的客户端是在调用方法 C 之前还是在调用/完成方法 C 之后取回返回值?

C# Web 服务 - 返回然后最后 - 首先发生什么

首先计算返回值,然后执行 finally 块,然后将控制权传递回调用方(使用返回值)。如果返回值的表达式将由 finally 块更改,则此顺序很重要。例如:

Console.WriteLine(Foo()); // This prints 10
...
static int Foo()
{
    int x = 10;
    try
    {
        return x;
    }
    finally
    {
        // This executes, but doesn't change the return value
        x = 20;
        // This executes before 10 is written to the console
        // by the caller.
        Console.WriteLine("Before Foo returns");
    }
}
finally 块

中的任何内容在离开 try 块后执行。在您的情况下,它返回 1 或 0,然后执行方法 c。有关尝试捕获-最后的更多信息,您可以参考此

相关文章: