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

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语句
            }
        }

    }

执行结果:

image

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

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

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

原文地址:https://www.cnblogs.com/liqipeng/p/3440201.html