C#中规定:如果程序的控制流进入了一个带finally块的try语句,那么finally语句块始终会被执行
例子:
class Program { static void Main(string[] args) { Console.WriteLine(GetNumber()); ; Console.ReadKey(); } static int GetNumber() { try { int n1 = 10; int n2 = 0; int n3 = n1 / n2; return 100; } catch (Exception ex) { Console.WriteLine("*******异常了*********"); return 1000; } finally { Console.WriteLine("finally中的代码!!!!");
//finally块里不能再有return语句
}
}
}
执行结果:
Javascript里是这样的:只要代码中包含了finally子句,则无论try或catch语句块中包含什么代码——甚至return语句,都不会阻止finally子句的执行:
function testFinally(){ try{ //......
return 2; } catch(err){ return 1; } finally{ return 0; } }
这个函数只会返回0,即finally块里的return