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

所谓异常(excepion)是当发生了某种异常情况或错误时产生的一个信号。抛出异常,就是用信号通知发生了错误或异常状况。捕获异常是指处理这个信号,抛出异常,就是用信号通知发生了错误或异常状况。捕获异常是指处理这个信号,即采取必要的手段从异常中汇丰。在javascript中,当产生运行时错误或者程序使用throw语句时就会显式的抛出异常。使用try/catch/finally语句可以捕获异常,下一节会对它作详细介绍。
throw语句的语法如下:

throw expression

expression的值可以是任意类型的。可以抛出一个代表错误码的数组,或者包含可错误消息的字符串。当javascript解释器抛出异常的时候,通常采用Eeeor类型或其子类型,当然也可以使用它们。一个error对象有一个那么熟悉表示错误类型,一个message属性用来传递构造函数的字符串(参照第三部分的Error类),在下面的例子中,当使用非法参数调用函数时就抛出一个Error对象:

复制代码 代码如下:


            function fa(x) {
                //如果输入的参数是非法的,则抛出一个异常
                if (x < 0) throw new Error("x不能是负数。");
                //否则计算出一个值,正常地返回它
                for (var f = 1; x > 1; f *= x, x--) /*empty*/;
                return f;
            }

当抛出异常时,javascript解释器会立即停止当前正在执行的逻辑,并跳转至就近的异常处理程序。异常处理程序用try/catch/finally语句的catch从句编写的。如果抛出的异常没有一条关联catch从句 ,解释器会检测更高层的闭合代码块,看它是否关联相关的异常处理程序。以此类推 ,直到扎到一个异常处理的程序为止。

如果抛出的异常函数没有处理它的try/catch/finally语句,异常将向上传播到调用该函数的代码。这样的话,异常就会沿着javascript方法的词法结构和调用栈向上传播。如果没有找到任何异常处理的程序,javascript将吧异常当成程序错误来处理,并报告给用户。

iiiiii.try/catch/finally语句

try/catch/finally语句是javascript的异常处理机制。其中try从句定义了需要处理的异常所在代码块。catch语句跟随在try从句之后,当try块从某处发送了异常时,调用了catch内的代码逻辑。catch从句跟随finnlly块,后者防置了清理代码,不管try块中是否产生了异常,finnally块内的逻辑总会执行。尽管catch和finally都是可选的,但try从句只杀二者之一与组成完整的语句。try、catch和finally语句块都需要花括号括起来,这里的花括号是必须的。即使从句中只有一条语句也不能省略花括号。

下面的代码说明了try/catch/finlly的语法和使用目的:

复制代码 代码如下:


        try{
            //通常来讲,这里的代码会从头执行到尾而不会产生任何问题,
            //但有时会抛出一个异常,要么是由throw语句直接抛出异常
            //要么通过调用一个方法间接抛出异常
        }
        catch(e){
            //当且仅当try抛出了异常,才会执行这里的代码
            //这里可以通过局部变量e来获得对Error对象或者抛出的其它值的引用
            //这里的代码可以基于某种原因处理这个异常 ,也可以忽略这个异常。
            //还可以通过throw语句重新抛出异常
        }
        finally{
            //不管try语句块是否抛出看异常,这里的逻辑总会执行,终止try的语句块方式有:
            //1)正常终止,执行完语句块的最后一条语句
            //2)通过break,continue或return语句终止
            //3)抛出一个异常,异常被catch从句捕获
            //4)抛出一个异常,异常未被捕获,继续向上传播
        }

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

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