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 之后取回返回值?
首先计算返回值,然后执行 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。有关尝试捕获-最后的更多信息,您可以参考此