惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
S
Securelist
MyScale Blog
MyScale Blog
Jina AI
Jina AI
罗磊的独立博客
The Cloudflare Blog
美团技术团队
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
雷峰网
雷峰网
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
博客园 - 聂微东
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
T
Tailwind CSS Blog
Attack and Defense Labs
Attack and Defense Labs
博客园_首页
Latest news
Latest news
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
D
Docker
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
T
Tor Project blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
B
Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
V2EX - 技术
V2EX - 技术
N
News | PayPal Newsroom
Microsoft Security Blog
Microsoft Security Blog

博客园 - smile轉角

【js】ES5,ES6继承是如何实现的 【js】setTimeout、Promise、Async/Await 的区别 【面试题】思维逻辑方面 【TS】学习笔记 【js】CommonJS、AMD、CMD三种规范 【其他】查看Animate.css官网动画没有效果 【vue3】父子组件通信之 vue3 defineProps,defineEmits ,defineExpose 【js】JS严格模式有什么特点 【css】使用弹性盒子布局时,省略号问题 【vue】 Failed to load resource: the server responded with a status of 404 (Not Found) 【第三方】富文本调研 【js】元素是否在可视区范围内 【js】json的相关操作 【vue3】资料 【css】展示背景图片的底部部分 【html】 svg 【html5】html5中input 标签 type值为range时,修改其默认css 【js】forEach,for...in,for...of 区别 【js】map,reduce,filter的区别
【js】js内置对象Error(错误机制)
smile轉角 · 2023-04-13 · via 博客园 - smile轉角
  • 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 属性(很多浏览器都扩展了这一属性), 它用来表示栈跟踪信息。

ReferenceError  

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

没有定义就直接使用

SyntaxError

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

将抛出以下错误,因为我们忘记给字符串添加引号了,不符合 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)
    }

相关资料: