首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript 错误处理大全【建议收藏】

代码主要用 Error 和 TypeError 这两种最常见类型来创建自己错误对象。...(); } 代码我们检查函数参数是否为字符串,如果不是则抛出异常。...如果异常是捕获,也就是说程序员没有采取任何措施来捕获它,则程序将会崩溃。 你什么时候及什么地方捕获代码异常取决于特定用例。 例如,你可能想要在栈传播异常,使程序完全崩溃。...如果失败了,或者决定不去捕获它,则异常可以冒泡。 从本质上讲,这还不错,但是不同环境下对捕获 rejection 反应不同。...异步生成器错误处理 JavaScript 异步生成器(Async generators) 不是生产简单值,而是能够生成 Promise 生成器函数

6.3K50
您找到你想要的搜索结果了吗?
是的
没有找到

JavaScript错误处理完全指南

代码,你将主要使用 Error 和 TypeError 这两种最常见类型来创建自己错误对象。...; throw null; 但最好避免这些事情,始终抛出正确错误对象,而不是基元。这样,你就可以代码库中保持错误处理一致性。...如果这个异常 捕获,即程序员没有采取任何措施来捕获它,则程序将崩溃。 何时何地捕获代码异常取决于具体用例。 例如,你可能想在堆栈传播一个异常,以使程序完全崩溃。...事件错误处理 文档对象模型(DOM) HTML 节点连接到 EventTarget,EventTarget 是浏览器任何事件发射器(emitter)公共祖先。...如果我们失败了,或者决定不在这里捕获它,那么 异常就可以堆栈冒泡了。这本身并不坏,但是不同环境对捕获拒绝反应是不同

4.9K20

关于 JavaScript 错误处理最完整指南(上半部)

上已经收录,文章已分类,也整理了很多我文档,和教程资料。 大家都说简历没项目写,我就帮大家找了一个项目,还附赠【搭建教程】。 什么是编程错误 我们开发过程并不总是一帆风顺。...我们代码,主要还是使用Error和TypeError这两种最常见类型来创建自己错误对象 ?。...; throw null; 但是,最好避免这些事情:始终抛出正确错误对象,而不是一些基本类型。 这样有助于代码错误处理一致性。...浏览器异步操作有:定时器相关函数、事件和 Promise。 异步错误处理不同于同步错误处理。我们来看一些例子。 大家都说简历没项目写,我就帮大家找了一个项目,还附赠【搭建教程】。...但这种做法意义不大,后面我们会使用 Promise 来解决这类问题。 事件错误处理 DOM 事件操作(监听和触发),都定义EventTarget接口。

1.6K30

这 10 个事例,有助于你理解 ES Promise

开发,了解 JavaScript 和 Promise 基础,有助于提高我们编码技能,今天,我们一起来看看下面的 10 片段,相信看完这 10 个片段有助于我们对 Promise 理解。....then或.catch返回错误对象不会引发错误,因此后续.catch不会捕获错误对象,需要更改为以下对象之一: return Promise.reject(new Error('error')...参数应为函数,而传递非函数将导致值结果被忽略,例如.then(2)或.then(Promise.resolve(3)。...>:4:13) .then可以接受两个参数,第一个是处理成功函数,第二个是处理错误函数。....catch是编写.then第二个参数便捷方法,但是使用要注意一点:.then第二个错误处理函数无法捕获第一个成功函数和后续函数抛出错误。 .catch捕获先前错误

41020

一篇文章教你如何捕获前端错误

e.g: 下图是图片资源不存在时上报数据: 3、未处理promise错误 使用catch捕获promise错误,往往都会存在比较大风险。...e.g: 下图是promise请求接口发生错误后,未进行catch时上报数据: 4、异步请求错误(fetch与xhr) 异步错误捕获分为两个部分:一个是传统XMLHttpRequest,另一个是使用...当网站请求并执行一个托管第三方域名下脚本时,就可能遇到该错误。最常见情形是使用 CDN 托管 JS 资源。 其实这并不是一个 JavaScript Bug。...因此,浏览器只允许同域下脚本捕获具体错误信息,而其他脚本只知道发生了一个错误,但无法获知错误具体内容。 解决方案1:(推荐) 添加 crossorigin="anonymous" 属性。...根据这个特点,可以 catch 语句中手动上报捕获异常。 总结 上述错误捕获基本覆盖了前端监控所需错误场景,但是第三部分指出两个其他问题,目前解决方式都不太完美。

3.2K90

一篇文章教你如何捕获前端错误

常见错误分类 对于用户访问页面时发生错误,主要包括以下几个类型: 1、js运行时错误 JavaScript代码在用户浏览器执行时,由于一些边界情况、本地环境不可控等因素,可能会存在js运行时错误...3、未处理promise错误 使用catch捕获promise错误,往往都会存在比较大风险。而编码时有可能覆盖不够全面,因此有必要监控未处理promise错误并进行上报。...('error')都能捕获,但是window.onerror含有详细error堆栈信息,存在error.stack,所以我们选择使用onerror方式对js运行时错误进行捕获。...当网站请求并执行一个托管第三方域名下脚本时,就可能遇到该错误。最常见情形是使用 CDN 托管 JS 资源。 其实这并不是一个 JavaScript Bug。...因此,浏览器只允许同域下脚本捕获具体错误信息,而其他脚本只知道发生了一个错误,但无法获知错误具体内容。 解决方案1:(推荐) 添加 crossorigin="anonymous" 属性。

3.7K40

前端异常捕获与处理

URI 处理函数而产生错误 三、异常处理 ECMA-262 第 3 版引入了 try-catch 语句,作为 JavaScript 处理异常一种标准方式,基本语法如下所示。...TypeError 类型 JavaScript 中会经常遇到,变量中保存着意外类型时,或者访问不存在方法时,都会导致这种错误。...); } 并不是捕获错误就结束了,捕获错误后,我们需要思考当错误发生时: 错误是否是致命,会不会导致其它连带错误 后续代码逻辑还能不能继续执行,用户还能不能继续操作 是不是需要将错误信息反馈给用户...:", e); } Uncaught TypeError: Cannot read property 'map' of undefined at :3:15 并没有捕获到异常...5.3 Promise 异常 Promise 异常不能被 try-catch 和 window.onerror 捕获,这时候我们就需要监听 unhandledrejection 来帮我们捕获这部分错误

3.3K30

这 10 个片段,有助于你理解 ES Promise

作者:Jay Chow 译者:前端小智 来源:jamesknelson 开发,了解 JavaScript 和 Promise 基础,有助于提高我们编码技能,今天,我们一起来看看下面的 10 片段,....then或.catch返回错误对象不会引发错误,因此后续.catch不会捕获错误对象,需要更改为以下对象之一: return Promise.reject(new Error('error')...参数应为函数,而传递非函数将导致值结果被忽略,例如.then(2)或.then(Promise.resolve(3)。...>:4:13) .then可以接受两个参数,第一个是处理成功函数,第二个是处理错误函数。....catch是编写.then第二个参数便捷方法,但是使用要注意一点:.then第二个错误处理函数无法捕获第一个成功函数和后续函数抛出错误。 .catch捕获先前错误

59630

为什么 asyncawait 不仅仅是句法糖

关于 JS 异步编程一点历史 异步编程 JavaScript 很常见。每当我们需要进行网络服务调用、文件访问或数据库操作时,尽管语言是单线程,但异步性是我们防止用户界面被阻塞方法。...有了 Promise 这个强大伙伴,听起来异步编程 JS 是一个已经解决问题,对吗? 恩,还没有,因为有时候 Promise 级别太低了,不太适合使用。...对我来说,这不是写这样一个函数最可读方式。...>:7:9) // at foo (:2:9) // at :10:1 async 版本正确地捕获错误堆栈跟踪。...async/await提供正常控制流语句和try catch错误处理,对于我们 JavaScript 协调复杂异步操作是非常宝贵

83920

关于 JavaScript 错误处理最完整指南(下半部)

,或者用 catch 来捕获出现错误。...如果我们失败了,或者决定不捕获它,异常可以堆栈自由冒泡。 使用 Promise 来处理定时器异常 使用定时器或事件无法捕获从回调引发异常。...使用 async generators 来处理错误 JavaScriptasync generators是能够生成 Promises 而不是简单值生成器函数。...Node.js 异步错误处理:回调模式 对于异步代码,Node.js 主要使用这两种方式: 回调模式 event emitters 回调模式,异步 Node.js API 接受一个函数,该函数通过事件循环处理...JavaScript程序,可以通过多种方式来捕获异常。 同步代码异常是最容易捕获。相反,异步异常需要一些技巧来处理。

2.2K20

如何优雅处理前端异常?

无法捕获语法错误; 到这里基本就清晰了:实际使用过程,onerror 主要是来捕获预料之外错误,而 try-catch 则是用来可预见情况下监控特定错误,两者结合使用更加高效。...这些 error 事件不会向上冒泡到 window ,不过(至少 Firefox )能被单一window.addEventListener 捕获。...Promise Catch promise 中使用 catch 可以非常方便捕获到异步 error ,这个很简单。...没有写 catch Promise 抛出错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出异常。...嗯,事实证明,也是会被正常捕获 所以,正如我们上面所说,为了防止有漏掉 Promise 异常,建议全局增加一个对 unhandledrejection 监听,用来全局监听 Uncaught Promise

1.6K20

如何优雅处理前端异常?

); } 我们看看日志: Uncaught TypeError: Cannot read property 'map' of undefined at setTimeout (:...无法捕获语法错误; 到这里基本就清晰了:实际使用过程,onerror 主要是来捕获预料之外错误,而 try-catch 则是用来可预见情况下监控特定错误,两者结合使用更加高效。...这些 error 事件不会向上冒泡到 window ,不过(至少 Firefox )能被单一window.addEventListener 捕获。...六、Promise Catch promise 中使用 catch 可以非常方便捕获到异步 error ,这个很简单。...没有写 catch Promise 抛出错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出异常。

2.1K30

前端开发,如何优雅处理前端异常?

:ReferenceError: nam is not defined at :3:15 不能捕获到具体语法错误,只有一个语法错误提示。...无法捕获语法错误; 到这里基本就清晰了:实际使用过程,onerror 主要是来捕获预料之外错误,而 try-catch 则是用来可预见情况下监控特定错误,两者结合使用更加高效。...这些 error 事件不会向上冒泡到 window ,不过(至少 Firefox )能被单一window.addEventListener 捕获。...六、Promise Catch promise 中使用 catch 可以非常方便捕获到异步 error ,这个很简单。...没有写 catch Promise 抛出错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出异常。

94810
领券