ser*_*hio 19 .net try-catch-finally
正如MSDN 提到的那样:
Finally块中的代码在遇到Try或Catch块中的Return语句之后但在执行Return语句之前运行.在这种情况下,Finally块中的Return语句在初始Return语句之前执行.这给出了不同的返回值.要防止这种可能令人困惑的情况,请避免在Finally块中使用Return语句.
由于我从这个笔记中不了解很多,我将举一个例子(VB.NET,我认为在C#中情况类似):
Try
HugeOp()
Return "OK"
Catch
Return "NOK"
Finally
Return "Finally"
End Try
Run Code Online (Sandbox Code Playgroud)
现在,为什么在C#和VB.NET中这都是非法的?
Tho*_*que 26
这是非法的,因为当你到达Finally
块时,返回的值已经定义(如果一切顺利,则为"OK",如果发现异常,则为"NOK").如果您能够从Finally
块返回不同的值,则无论上述指令的结果如何,都将始终返回此值.它只是没有意义......
归档时间: |
|
查看次数: |
14620 次 |
最近记录: |