首页 > 其他分享 >【js】js内置对象Error(错误机制)

【js】js内置对象Error(错误机制)

时间:2023-04-13 18:36:35浏览次数:46  
标签:内置 console 错误 抛出 error js Error throw

  • Error:基类型;
  • ReferenceError:找不到对象时抛出;
  • SyntaxError:语法错误;
  • TypeError:类型错误时抛出;
  • EvalError:eval()函数发生异常时抛出;
  • InternalError :js引擎内部发生的错误;
  • RangeError:数值超出范围时触发;
  • URIError:URI格式不正确时抛出,常发生在encodeURI或者decodeURI调用时;
  • DOMException:调用web api属性时发生的异常事件 

 

Error

当运行时错误产生时,Error 对象会被抛出。Error 对象也可用于用户自定义的异常的基础对象

Error 构造函数可以实例化一个 error 对象 (也就是Error 实例),而 error 对象就是一个包含了错误信息的对象。

当代码解析或者运行时发生错误,javascript 引擎就会自动产生并抛出一个 error 对象,

然后程序就中断在发生错误的地方。

demo:

const error = new Error('Whoop!');
error.message; // Whoop!
error.name; // Error
error.stack; // "Error: Whoops! at <anonymous>:1:13"

我们常用的 message 和 name 都是 error 的标准属性,由于各个浏览器厂商对 error 进行了不同的扩展,所以在不同的浏览器中,error 也有不同的属性和方法, 非标准属性中我们常用的是 stack 属性(很多浏览器都扩展了这一属性), 它用来表示栈跟踪信息。

message 错误信息
name 错误类型
constructor 指定一个函数用来创建实例的原型,也就是指定构造器(创建自定义 Error 会用到)
stack (非标准) 栈跟踪信息

ReferenceError  

ReferecnceError 错误会在找不到对象时发生,

  console.log(a);

没有定义就直接使用

SyntaxError

当您尝试运行的代码不符合 JavaScript 的语法规则时,就会发生语法错误。

let arr = 2b

将抛出以下错误,因为我们忘记给字符串添加引号了,不符合 JavaScript 语法规则。

TypeError

TypeError 错误主要发生在变量不是预期类型,

或者访问不存在的方法时发生,

实际开发过程中会有很多原因导致这种错误,

尤其是在使用类型特定的操作而变量类型不对时发生,比如这个:

let str = "hello";
str.forEach((element) => {
  console.log(element);
});

RangeError

RangeError 错误会在数值越界时抛出,

let arr = new Array(-20);

将抛出以下错误,因为定义数组时设置了并不支持的长度。

 

 

错误处理

1、错误捕获:try ... catch
2、抛出错误:throw new Error

throw 语句

throw 过程是阻塞的,程序会中断在第一个抛出错误的地方,所以后面的代码不会执行。

throw new SyntaxError('this is syntax error'); 
throw 123; // 不执行
throw 'hi there'; // 不执行
throw true;  // 不执行

 

 

 

catch 语句

catch 代码块捕获错误之后,程序不会中断,会按照正常流程继续执行下去。

 demo1:
try {
  throw new Error('Whoops!');
} catch (e) {
  console.log(e.name + ':' + e.message);
}
console.log('hello!');

 

 

 

demo2

try{
  console.log(a);
} 
catch (error){
  console.log(error);
}
console.log('还可以执行')

 

 

 

      function something(){
        if(Math.floor(Math.random()* 10)% 2 === 0){
            console.log('0-10的随机数是偶数,可执行');
        }
        else {
            //抛出错误
            throw new Error('0-10的随机数是奇数,不执行');
        }
    }
    try {
        something()
      //有可能抛出错误,需要捕获异常
    } catch(error){
        alert(error.message)
    }

 

 

 

 

 

相关资料:

 

标签:内置,console,错误,抛出,error,js,Error,throw
From: https://www.cnblogs.com/websmile/p/17315635.html

相关文章

  • Javascript内置对象
    内置对象(常用方法)Math(不是构造函数,直接调用)/**@file封装自己的myMath对象@authorlxs/varmyMath={PI:3.1415926,/*@description求最小值@returns{Number}max@examplemax(3,5)//5/max:function(){varmax=arguments[0];for(vari=1;i<arg......
  • 使用vue+bpmn-js实现activiti的流程设计器__Vue.js
    https://www.vue-js.com/topic/5f6c4af84590fe0031e591ef完整代码见github:https://github.com/griabcrh/vue-activiti-demo适配activitiimportactivitiModdleDescriptorfrom'../js/activiti.json';this.bpmnModeler=newBpmnModeler({container:ca......
  • adobe安装提示错误“Error:SyntaxError:JSON Parse error:Unexpected EOF”的解决方法
    mac电脑安装Adobe时,会提示错误“Error:SyntaxError:JSONParseerror:UnexpectedEOF”,这是怎么回事儿的,不管您是安装AI、ps、PR还是lr,如果也遇到相同的问题,可以参考一下方法解决。adobe安装提示错误“Error:SyntaxError:JSONParseerror:UnexpectedEOF”的解决方法,如下:需要使用A......
  • 函数解决js数值相加精度丢失问题
    浏览器控制台输入console.log(0.1+0.2)结果为0.30000000000000004      当我们尝试将0.1和0.2相加时,结果应该是0.3,但是在JavaScript中,结果却是0.30000000000000004。这是因为0.1和0.2在二进制中无法被精确表示,所以在进行相加时会产生舍入误差,从而导致精度丢失。......
  • js正则表达式
    \d查找数字\D查找非数字字符\s查找空白字符\S查找非空白字符\w查找数字、字母及下划线\W查找非单词字符\n查找换行符\0查找NULL字符\r查找回车符n+查找一个或者多个如:/a+/匹配"candy"中的"a","caaaaaaandy"中所有的"a"当......
  • 【异步加载JS脚本(script标签)至html文档中】的辅助函数
    Code:/***'asyncLoadScript'方法的配置项'options'的类型定义*@typedef{Object}IOptions*@prop{string}id-script标签的ID*@prop{Function}onSucceed-加载成功后的回调*@prop{(Function|undefined)}onFailed-加载失败后的回调*@prop{boolean}s......
  • 纯前端仿GPT流式打字效果的js库,类似通义千问或者其他AI界面的打字效果
    因为GPT以及国内各大模型的发布,很多官网都设计的是,仿造流式打字效果,下面这个js库就能轻松实现。typed.js  具体实现代码参考下面:<spanid="subTitle"></span><scriptsrc="https://unpkg.com/[email protected]/dist/typed.umd.js"></script><script>vartyped=......
  • C# Json序列化,设置驼峰命名(字段首字母小写)
    相关代码:varserializerSettings=newJsonSerializerSettings{//设置为驼峰命名ContractResolver=newCamelCasePropertyNamesContractResolver()};varresult=JsonConvert.Ser......
  • Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not fi
    用idea使用mybatis时<mappers><mapperresource="com/mybatis/mapper/UserMapper.xml"></mapper></mappers>遇到吐下错误时ErrorparsingSQLMapperConfiguration.Cause:java.io.IOException:Couldnotfindresourcecom/my......
  • 在js中==与===的区别
    在js中两个=与三个=的区别在js中经常会有这种写法1=="1"实际上二者是不同的,但这种放在js中得到的结果是true,为什么会这样呢,是因为在对比之前,js将"1"转换为了number类型,所以得到的结果是true。而下面代码得到的结果为false1==="1"之所以会出现false,是因为比较之前没有转......