随笔 - 63  文章 - 72  评论 - 951  阅读 - 140万 

http://msdn.microsoft.com/zh-cn/library/h37wtbc7.aspx

这样的 finally 块的运行速度会很慢并且可能导致混乱。这是有意的吗?

一条语句(returnbreak)会导致对程序的控制离开 finally 块。如果在 trycatch 块中有 returnbreak 语句,这可能会产生意想不到的结果。

finally 块中的代码总是在 try 块中的代码之后运行,如果有错误的话,则在 catch 块中的代码之后运行。例如,如果在 try 块中遇到 return 语句,则在执行 return 语句之前先执行 finally 块。如果在 finally 块中有另一个 return 语句,那么将执行该语句,而不执行最初的 return 语句。若要避免这种可能会导致混淆的情况,请不要在 finally 块中使用 return 语句。

function test() {
try {
return(5);   // Attempt to return 5.
} catch(e) {
print(e);
} finally {
return(10);  // This gets run first, returning 10 instead of 5.
}
}
print(test());     // Prints 10, not 5.

更正此错误

  1. 确保不在 finally 块中使用 returnbreak 语句。

  2. 如果打算在 trycatch 块之后执行 returnbreak 语句,则将它们移到紧跟 finally 块之后的位置。

posted on   stg609  阅读(326)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
分享按钮
点击右上角即可分享
微信分享提示