错误

JavaScript 错误和异常免费看

JavaScript中的错误、常见的错误类型、异常处理、finally语句

2020-06-22侠课岛    基础入门       

前端/前端必修/JavaScript 基础知识梳理 10     0     603

JavaScript 中执行代码时,会发生各种错误(Error)。比如说,程序员在编码过程中出现的各种错误、代码错误呀,逻辑错误呀,或者是由于用户错误输入引起的错误、或者其他不可预见性的错误等等。

示例:

例如我们执行下面这两句代码:

vars a = 1;
console.log(a);

执行代码后会报错,如下图所示:

这是因为我们在定义变量时,不小心将关键字 var 写成了 vars,所以在执行代码执行代码时会报错。错误信息很清楚的告诉我们这里报了一个语法错误 SyntaxError,并且指出了错误原因,是因为意外的标识符 Unexpected identifier

常见的错误类型

我们来看下面这几种常见的错误类型:

  • SyntaxError:语法错误。
  • TypeError:类型错误,变量或参数不属于有效类型。
  • ReferenceError:无效引用。
  • RangeError:范围错误,数值变量或参数超出有效范围。
  • InternalError:javascript引擎内部错误,如递归太多。
  • EvalErroreval()函数执行错误。
  • URIError:URL错误,主要是相关函数的参数不正确。

错误的主要属性:

  • name:错误类型名。
  • message:错误信息。
  • stack:错误跟踪。

异常处理

JavaScript 中的异常处理,有下面这三种结构:

  • try...catch
  • try...finally
  • try...catch...finally

try 语句允许我们定义在执行时进行错误测试的代码块。catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。finally 语句无论代码是否有异常都会执行。

语法:

try {
    ...    //异常的抛出
} catch(e) {
    ...    //异常的捕获与处理
} finally {
    ...    //结束处理
}
示例:

例如我们在 try 块中编写一段错误代码,看 catch 是否会捕捉到 try 块中的错误:

try{
    console.log(a);
} catch(e){
    console.log("发生错误,错误类型:", e);
}

执行代码:

很明显,从上图中的代码执行结果我们可以看出,catch 块成功捕捉到了 try 块中的错误。

需要注意的是,当try中的代码发生异常时,不会再执行剩余代码,而是执行catch,例如:

try{
    console.log(a);
    var name = "xkd";
    console.log("你好呀,xkd");
} catch(e){
    console.log("发生错误,错误类型:", e);
}

因为console.log(a);会发生异常,所以这句代码后面的代码都不会执行。

finally语句

finally 语句的作用就是,它里面的代码不管前面的 trycatch 中是否产生异常都会执行。所以如果有什么必须要执行的代码,就可以放到 finally 中。

示例:

例如在一段代码中,不管是否发生异常,都要打印 “我爱学习”:

try{
    var a = 10;
    var b = 36;
    qconsole.log(a + b);  // 这是错误代码
} catch(e){
    console.log(e.stack);
}finally{
    console.log("我爱学习");
}

执行代码:

从上图我们可以看到,即使 try 块中发生了异常,catch 块捕捉了异常,finally 块中的代码依然正常执行,并没有任何影响。

throw 语句

我们可以使用 throw 语句来抛出一个用户自定义的异常。throw 语句 之后的代码将不会执行。

语法:

throw exception

其中 exception 可以是 JavaScript 中的字符串、数字、布尔值或一个对象。注意 throw 为小写字母,使用大写字母会造成 JavaScript 出错。

示例:

例如我们根据变量 a 的值进行不同判断,如果 a 小于5,则抛出一个错误,

try{
    var a = 1;
    if(a < 5){
        throw "err1"
    }else{
        console.log("a的值为:", a);
    }
} catch(e){
    if(e == "err1"){
        console.log("错误,变量a不可以小于5");;
    }else if(e == "err2"){
        console.log("其他自定义错误");
    }
}finally{
    console.log("我爱学习");
}

输出:

错误,变量a不可以小于5
我爱学习

上面这段代码中,因为变量 a 的值小于 5,所示会抛出我们自定义的错误 “err1”,然后 catch 会捕捉错误,显示出对应的错误信息。最后不管是否报错,都不影响 finally 块的执行。

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

10

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录


本文索引


|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?