JavaScript异常


异常基础

概述

JavaScript 引擎执行 JavaScript 代码时,有可能会发生各种异常,例如是语法异常,语言中缺少的功能,由于来自服务器或用户的异常输出而导致的异常。

Javascript 引擎是单线程的,因此一旦遇到异常,**Javascript** 引擎通常会停止执行,阻塞后续代码并抛出一个异常信息,因此对于可预见的异常,我们应该捕捉并正确展示给用户或开发者

Error对象

概述

Error是JavaScript的内置异常的基础类。该类主要是在程序报错时会创建一个异常对象,该异常对象就包含了错误的相关信息,比如错误内容(message)、出错的地方(stack)、错误的类型名称(name)

  • messagestacknameError类的三个属性。

  • 开发人员可以通过throw关键字来主动报错。

Error内置子类 (异常分类)

  • RangeError:范围错误。一般是数组长度不合法的时候会报该错误
  • referenceError:引用错误。使用了未定义的变量
  • URIError:对地址解析不对,会导致该错误
  • TypeError:处理的数据类型不对
  • SyntaxError:语法错误
  • evalError:当使用eval时的报错。但是目前使用eval不会报错,所以这个只是为了兼容以前的版本遗留下来的。
// RangeError
let arr = new Array(-1);//新建长度为-1的数组
// SyntaxError 
let 1a = 1;
// TypeError
let a = new 1;
//URIError 
let a = decodeURI("%2");

异常处理

try-catch:异常捕获和处理

概述

try-catch是专用于解决捕获异常防止程序终止,后续代码无法运行,这样可以保证代码哪怕报错之后,也不会终止程序的运行。

语法

try{
    //可能会报错的代码
}catch(error){
    //当报错时会执行catch里的代码
}finally{
    //无论是否报错,都会执行finally里的代码
}
  • 报错时,错误的相关信息JavaScript会自动创建一个异常对象并将信息保存起来作为catch代码执行时的参数
  • 如果try里的代码没有报错,那么catch里的代码不会执行。

throw :主动抛出异常

throw  异常对象; 
例子:抛出一个loginError异常
throw new LoginError();

自定义异常

  • 背景:为了实现自己项目中业务相关的异常,可以通过定义新的类继承Error类来实现自定义异常

  • 作用:实现定制的异常

  • 语法

    class LoginError extends Error{
        constructor(message){
            //调用父类初始化构造器
            super(message);
            this.name = "LoginError";
        }
    }
    

总结

  1. 程序中的异常是指程序报的”错误”,本质上是一个异常对象。
  2. 能够使用try-catch-finally捕获并处理异常,能够保证处理异常之后程序可以继续执行
  3. 可以使用throw来主动抛出异常(不符合自己的业务逻辑)
  4. JavaScript内置异常满足不了开发需求时可以自定义异常
    1. 定义一个类继承Error
    2. 构造函数里需要调用super(message)
    3. 构造函数里需要给this.name赋值,这个表示自定义异常的类型名称。
    4. 自定义异常可以通过throw来抛出,即主动抛出

文章作者: 时光路人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 时光路人 !
评论
  目录