zoukankan      html  css  js  c++  java
  • 错误处理机制

    原文地址:https://wangdoc.com/javascript/

    Error实例对象

    JavaScript解析或运行时,一旦发生错误,引擎就会抛出一个错误对象。JavaScript原生提供Error构造函数,所有抛出的错误都是这个构造函数的实例。

    var err = new Error("Error message");
    err.message // "Error message"
    

    Error构造函数接受一个参数,表示错误信息。通过实例的message属性来获取。JavaScript语言标准只提到,Error实例对象必须有message属性,没有提到其他属性。大多数JavaScript引擎对Error实例还提供了namestack属性,分别表示错误的名称和错误的堆栈,但它们是非标准的。

    • message:错误提示信息
    • name:错误名称(非标准)
    • stack:错误的堆栈(非标准)

    原生错误类型

    Error实例对象是最一般的错误类型,在它的基础上,JavaScript还定义了其他6种错误对象。也就是说,存在Error的6个派生对象。

    SyntaxError对象

    SyntaxError对象时解析代码时发生的语法错误。

    ReferenceError对象

    ReferenceError对象是引用一个不存在的变量时发生的错误。将一个值分配给无法分配的对象,比如对函数运行结果或者this赋值。

    RangeError对象

    RangeError对象是一个值超出有效范围发生的错误。主要有几种情况,一是数组长度为负数,二是Number对象的方法参数超出范围,以及函数堆栈超过最大值。

    TypeError对象

    TypeError对象是变量或参数不是预期类型时发生的错误。比如对字符串、布尔值、数值等原始类型的值使用new命令,因为new命令的参数应该是一个构造函数,或者调用某个对象不存在的方法,也会抛出TypeError错误。

    URIError

    URIError对象是URI相关函数的参数不正确时抛出的错误,主要涉及encodeURI()decodeURI()encodeURIComponent()decodeURIComponent()escape()unescape()这六个函数。

    EvalError对象

    eval函数没有正确执行时,会抛出EvalError错误,该错误类型已经不再使用,为了兼容旧代码而保留。

    自定义错误

    JavaScript除了提供原生的七种错误对象外,还可以定义自己的错误对象。

    function CustomError(message) {
        this.message = message || "Default error";
        this.name = "CustomError";
    }
    CustomError.prototype = new Error();
    CustomError.prototype.constructor = CustomError
    

    上面代码自定义了一个错误对象CustomError,它继承Error对象。然后,就可以生成这种自定义类型的错误了。

    throw语句

    throw语句作用是手动中断程序执行,抛出一个错误。
    实际上,throw可以抛出任何类型的值。也就是说,它的参数可以是任何值。

    throw "Error";
    throw 42;
    throw {};
    

    try...catch结构

    一旦发生了错误,程序就中止执行。JavaScript提供了try...catch结构,允许对错误进行处理,选择是否往下执行。
    为了捕捉不同类型的错误,catch代码块中可以加入判断语句。

    try {
        // ...
    } catch (e) {
        if (e instanceof EvalError) {
            // ...
        } else if (e instanceof RangeError) {
            // ...
        }
        // ...
    }
    ## finally代码块
    <font color=red>try...catch</font>结构允许在最后添加一个<font color=red>finally</font>代码块,表示不管是否出现错误,都必须在最后运行的语句。
  • 相关阅读:
    [置顶] 某大型银行深化系统技术方案之一:实现技术定义
    android代码实现关机
    一个IP每天只弹一次广告窗口
    bootstrap框架开发电子商城案例
    HDU 1203 I NEED A OFFER!(dp)
    STL algorithmi算法s_sorted和is_sorted_until(28)
    计数排序(C语言版本)
    4.事务提交过程,交易的基本概念,Oracle交易周期,保存点savepoint,数据库的隔离级别
    《python源代码分析》笔记 pythonVM一般表达式
    ASP.NET——两个下拉框来实现动态联动
  • 原文地址:https://www.cnblogs.com/chris-jichen/p/10038116.html
Copyright © 2011-2022 走看看