Javascript核心读书有感之语句(13)

我们注意到,关键字catch后跟随了一对圆括号,圆括号内是一个标识符。这个标识符和函数参很像。当捕获一个异常时,把这个异常相关的值(比如Error对象)赋值给这个参数。和普通的变量不同,这条catch子句中的标识符具有块级作用域,它只在catch语句块 内有定义。

这里有一个关于try/catch语句更实际的例子,这里使用了前面章节中提到factorial()方法,并使用客户端javascript方法prompt()和alert()来输入和输出

复制代码 代码如下:


            try {
                //要求用户输入一个数字
                var n = Number(prompt("请输入一个正整数", ""));
                //假设输入是合法的,计算这个阶乘
                var f = factorial(n);
                //显示结果
                alert(n + "!=" + f);
            } catch (ex) {
                //如果输入不合法,将执行这里的逻辑
                document.write(ex); //告诉用户发送了什么。
            }

这里的try/catch语句并不包含finally从句。尽管finally不像catch那样经常使用,但有时候它还是非常有用。然而,我们需要更详尽的解释它的行为。不管try语句块中的代码执行完成了多少,只要try语句中有一部分代码执行了,finally从句就会执行。它通常在try从句的代码后用于清理工作。

关注下面这个例子

复制代码 代码如下:


            try {
                print("Outer try running..");
                try {
                    print("Nested try running...");
                    throw "an error";
                } catch (e) {
                    print("Nested catch caught " + e);
                    throw e + " re-thrown";
                } finally {
                    print("Nested finally is running...");
                }
            } catch (e) {
                print("Outer catch caught " + e);
            } finally {
                print("Outer finally running");
            }
             // Windows Script Host 作出该修改从而得出 WScript.Echo(s)
            function print(s) {
                document.write(s);
            }

输出:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgffjf.html