C#和Javascript的try…catch…finally的一点差别

时间:2022-06-12 17:05:22

C#中规定:如果程序的控制流进入了一个带finally块的try语句,那么finally语句块始终会被执行

例子:

class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetNumber()); ;
Console.ReadKey();
} static int GetNumber()
{
try
{
int n1 = ;
int n2 = ;
int n3 = n1 / n2;
return ;
}
catch (Exception ex)
{
Console.WriteLine("*******异常了*********");
return ;
}
finally
{
Console.WriteLine("finally中的代码!!!!");
                //finally块里不能再有return语句
}
} }

执行结果:

C#和Javascript的try…catch…finally的一点差别

Javascript里是这样的:只要代码中包含了finally子句,则无论try或catch语句块中包含什么代码——甚至return语句,都不会阻止finally子句的执行:

function testFinally(){
try{
//......
return 2;
}
catch(err){
return 1;
}
finally{
return 0;
}
}

这个函数只会返回0,即finally块里的return