前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >21错误与异常

21错误与异常

作者头像
Dreamy.TZK
发布2020-06-06 16:36:50
1K0
发布2020-06-06 16:36:50
举报
文章被收录于专栏:小康的自留地小康的自留地

错误与异常是什么

错误,指程序中的非正常运行状态,在其它编程语言中称为“异常”或“错误”。解释器会为每个错误情形创建并抛出一个Error对象,其中包含错误的描述信息。

通过使用Javascript提供的异常处理语句,可以用结构化的方式来捕捉发生的错误,让异常处理代码与核心业务代码实现分离。

错误与异常处理在应用中的重要性是毋庸置疑的。任何有影响力的Web应用都需要一套完善的错误处理机制。

try…catch语句

try表示标记一块待尝试的语句,如果语句出现错误,则通过catch语句进行捕捉。

代码语言:javascript
复制
// 用于捕获指定语句块中的错误或异常
try {
  console.log(v); //调用未定义的变量 -> 报错
} catch (error) {
  // 用于处理try语句中的错误
  // error 表示try语句中出现错误的信息
  console.log("改变量未定义");
} finally {
  // catch语句无法处理try语句中的错误或异常时,执行finally语句中的内容
  console.log("");
}

finally表示最后执行,无论是走try还是catch都会执行finally语句。

throw语句

人为抛出错误或异常,语法结构throw 异常或错误的表达式。其表达式允许是任意类型的内容。作用为预判断当前使用的变量、函数或对象是否存在。

代码语言:javascript
复制
function fn(v) {
    if (v) {
        return v;
    } else {
        /**
     * throw 语句 - 人为抛出错误或异常
     * 语法结构
     *   - throw 异常或错误的表达式
     *   表达式允许是任意类型的内容
     * 作用 - 预判断当前使用的变量、函数或对象是否存在
     */
        // 真是情况下应抛出一个错误对象
        throw "undefined";
    }
}
// console.log(fn(10));
// console.log(fn());

var result;
try {
    result = fn();
} catch (e) {
    result = "unkown";
    console.log(e); // undefined
}

console.log(result); // unkown

嵌套try…catch语句

可以嵌套一个或多个try…catch语句。如果一个内部的try…catch语句没有捕捉块,将会启动匹配外部的try…catch语句的捕捉块。

注意:嵌套在catch语句块内。

代码语言:javascript
复制
try {
    console.log(0);
} catch (e) {
    try {
        console.log(1);
    } catch (e) {
        console.log(2);
    }
}

错误类型

基本错误类型

执行代码期间可能会发生的错误有多种类型,每种错误都有对应的错误类型。当错误发生时,就会抛出对应类型的错误对象。

Error是基本错误类型,其他错误类型都继承自该类型。Error类型的错误很少见,如果有也是浏览器抛出的。这个基本错误类型的主要目的是提供给开发人员抛出自定义错误的。

预定义错误类型

错误类型

说明

EvaError

表示错误的原因:与eval()有关。

internalError

表示JavaScript引擎内部错误的异常。

RangeError

表示错误的原因:数值变量或参数超出其有效范围。

ReferenceError

表示错误的原因:无效引用。

SyntaxError

表示错误的原因:eval()在解析代码的过程中发生的语法错误。

TypeError

表示错误的原因:变量或参数不属于有效类型。

URIError

表示错误的原因:给encodeURI()或decodeURI()传递的参数无效。

JavaScript 错误参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 错误与异常是什么
  • try…catch语句
  • throw语句
  • 嵌套try…catch语句
  • 错误类型
    • 基本错误类型
      • 预定义错误类型
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档