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

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

TypeError URIError 请记住,所有这些错误类型都是实际构造函数,旨在返回一个错误对象。...(); } 在代码中我们检查函数参数是否为字符串,如果不是则抛出异常。...如果异常是捕获,也就是说程序员没有采取任何措施来捕获它,则程序将会崩溃。 你在什么时候及在什么地方捕获代码中异常取决于特定用例。 例如,你可能想要在栈中传播异常,使程序完全崩溃。...如果失败了,或者决定不去捕获它,则异常可以在栈中冒泡。 从本质上讲,这还不错,但是在不同环境下对捕获 rejection 反应不同。...; 当我们从异步函数中抛出异常时,异常会成为导致底层 Promise 被拒绝原因。 任何错误都可以通过外部 catch 来拦截。

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

前端异常捕获与处理

:尝试引用一个未被定义变量时,将会抛出此异常 SyntaxError:语法解析不合理 TypeError:类型错误,用来表示值类型非预期类型时发生错误 URIError:以一种错误方式使用全局...TypeError 类型在 JavaScript 中会经常遇到,在变量中保存着意外类型时,或者在访问不存在方法时,都会导致这种错误。...remoteData 为服务端返回数据 } catch { console.error("服务端数据格式返回异常,无法解析", remoteData); } 并不是捕获到错误就结束了,捕获到错误后...,我们需要思考当错误发生时: 错误是否是致命,会不会导致其它连带错误 后续代码逻辑还能不能继续执行,用户还能不能继续操作 是不是需要将错误信息反馈给用户,提示用户如何处理该错误 是不是需要将错误上报服务端...因为 React 组件是声明性,所以 try-catch 不是一个可靠选项。为了弥补这一点,React 实现了所谓错误边界。

3.3K30

JavaScript错误处理完全指南

SyntaxError TypeError URIError 请记住,所有这些错误类型都是 实际构造函数,旨在返回一个错误对象。...如果这个异常 捕获,即程序员没有采取任何措施来捕获它,则程序将崩溃。 在何时何地捕获代码中异常取决于具体用例。 例如,你可能想在堆栈中传播一个异常,以使程序完全崩溃。...如果我们失败了,或者决定不在这里捕获它,那么 异常就可以在堆栈中冒泡了。这本身并不坏,但是不同环境对捕获拒绝反应是不同。...如果拒绝 Promise 不是一个出现在输入数组中对象,则 Promise.race 解析: const promise1 = Promise.resolve("The first!")...; // Promise.reject } 此处错误处理规则也是和 Promise 一样。在异步生成器中 throw 将导致一个 Promise 拒绝,我们使用 catch 拦截它。

4.8K20

浅析前端异常及降级处理

,将引发该异常: image.png TypeError 传递给函数操作数或实参与该操作符或函数期望类型不兼容: image.png URIError 当全局URI处理函数以错误方式使用时:...(6) React中捕获异常 部分 UI JavaScript 错误不应该导致整个应用崩溃,为了解决这个问题,React 16 引入了一个概念 —— 错误边界。...特定错误信息,比如错误所在生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件渲染和观察期间捕获错误处理函数。...另外,如果任何被覆盖钩子或处理函数返回一个 Promise 链 (例如 async 函数),则来自其 Promise错误也会被处理。 以上引用自Vue 官网。...流程图如下: image.png 第一个问题原来根本就不是问题,这本身就是一个闭环,不用我们解决!

1.4K10

try..catch 不能捕获错误有哪些?注意事项又有哪些?

try块包含我们需要检查代码 关键字throw用于抛出自定义错误 catch块处理捕获错误 finally 块是最终结果无论如何,都会执行一个块,可以在这个块里面做一些需要善后事情 1.1 try...noSuchVariable; // undefined variable }, 1000); } catch (err) { console.log("这里不会被执行"); } 捕获...Uncaught Error: Error while executing the code 这里注意两件事: 即使从try块抛出错误后,也会执行finally块 如果没有catch块,错误将不能被优雅地处理,从而导致捕获错误...3.2 EvalError EvalError 表示关于全局eval()函数错误,这个异常不再由 JS 抛出,它存在是为了向后兼容。...如果该值不是预期类型,则抛出TypeError

2.5K20

【Web技术】剖析前端异常及降级处理

,将引发该异常: image.png TypeError 传递给函数操作数或实参与该操作符或函数期望类型不兼容: image.png URIError 当全局URI处理函数以错误方式使用时:...(6) React中捕获异常 部分 UI JavaScript 错误不应该导致整个应用崩溃,为了解决这个问题,React 16 引入了一个概念 —— 错误边界。...特定错误信息,比如错误所在生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件渲染和观察期间捕获错误处理函数。...另外,如果任何被覆盖钩子或处理函数返回一个 Promise 链 (例如 async 函数),则来自其 Promise错误也会被处理。 以上引用自Vue 官网。...流程图如下: image.png 第一个问题原来根本就不是问题,这本身就是一个闭环,不用我们解决!

1.3K10

剖析前端异常及其降级处理和防范方案

image.png TypeError 传递给函数操作数或实参与该操作符或函数期望类型不兼容: ? image.png URIError 当全局URI处理函数以错误方式使用时: ?...(6) React中捕获异常 部分 UI JavaScript 错误不应该导致整个应用崩溃,为了解决这个问题,React 16 引入了一个概念 —— 错误边界。...特定错误信息,比如错误所在生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件渲染和观察期间捕获错误处理函数。...另外,如果任何被覆盖钩子或处理函数返回一个 Promise 链 (例如 async 函数),则来自其 Promise错误也会被处理。 以上引用自Vue 官网。...image.png 第一个问题原来根本就不是问题,这本身就是一个闭环,不用我们解决!

1.1K40

前端魔法堂——异常不仅仅是trycatch

ReferenceError,当引用未声明变量时发生 SyntaxError,解析时发生语法错误 TypeError,当值不是所期待类型时,null.f()也报这个错 URIError,当传递一个非法...",用try/catch就够了  为了防止由于异常出现,导致正常代码被略过风险,我们习惯采取try/catch来捕获并处理异常。...同步代码"就是说无法获取如setTimeout、Promise等异步代码异常,也就是说try/catch仅能捕获当前任务异常,setTimeout等异步代码是在下一个EventLoop中执行。...通过Promise来处理复杂异步流程控制让我们得心应手,但倘若其中出现异常或Promise实例状态变为rejected时,会是怎样一个状况,我们又可以如何处理呢?...Promise实例初始化状态是pending,而发生异常时则为rejected,而导致状态从pending转变为rejected操作有 调用Promise.reject类方法 在工厂方法中调用reject

1.4K70

前端魔法堂——异常不仅仅是trycatch

ReferenceError,当引用未声明变量时发生 SyntaxError,解析时发生语法错误 TypeError,当值不是所期待类型时,null.f()也报这个错 URIError,当传递一个非法...",用try/catch就够了  为了防止由于异常出现,导致正常代码被略过风险,我们习惯采取try/catch来捕获并处理异常。...同步代码"就是说无法获取如setTimeout、Promise等异步代码异常,也就是说try/catch仅能捕获当前任务异常,setTimeout等异步代码是在下一个EventLoop中执行。...通过Promise来处理复杂异步流程控制让我们得心应手,但倘若其中出现异常或Promise实例状态变为rejected时,会是怎样一个状况,我们又可以如何处理呢?...Promise实例初始化状态是pending,而发生异常时则为rejected,而导致状态从pending转变为rejected操作有 调用Promise.reject类方法 在工厂方法中调用reject

1.1K30

如何搭建前端异常监控系统

什么是异常 是指用户在使用应用时,无法得到预期结果。不同异常带来后果程度不同,轻则引起用户使用不悦,重则导致产品无法使用,从而使用户丧失对产品认可。...当 JavaScript 运行时错误(包括语法错误)发生时,window 会触发一个 ErrorEvent 接口 error 事件,并执行 window.onerror() 若该函数返回 true,...(如 或 )加载失败,加载资源元素会触发一个 Event 接口 error 事件,并执行该元素上 onerror() 处理函数。..., vm, info) => { console.error('捕获异常:', err, vm, info); } React React16,提供了一个内置函数 componentDidCatch...: 事件处理程序 异步代码(例如 setTimeout 或 requestAnimationFrame 回调) 服务器端渲染 在错误边界本身(而不是其子级)中引发错误 iframe 由于浏览器设置

1.2K00

如何搭建前端异常监控系统

不同异常带来后果程度不同,轻则引起用户使用不悦,重则导致产品无法使用,从而使用户丧失对产品认可。...或)加载失败,加载资源元素会触发一个Event接口error事件,并执行该元素上onerror()处理函数。...:', err); }); Promise.reject('promise'); 结果:捕获异常:PromiseRejectionEvent {isTrusted: true, promise: Promise..., vm, info) => { console.error('捕获异常:', err, vm, info); } React React 16,提供了一个内置函数componentDidCatch,使用它可以非常简单获取到...: 事件处理程序 异步代码(例如setTimeout或requestAnimationFrame回调) 服务器端渲染 在错误边界本身(而不是其子级)中引发错误 iframe 由于浏览器设置“同源策略

1.7K20

常见8个前端防御性编程方案

js对象中初始化属性值是undefined,从undefined读取属性就会导致这个错误(同理,null也一样) 如何避免?...遇到是空值时候便会返回undefined. 2.前端接口层面的错误机制捕获 前端接口调用,一般都比较频繁,我们这时候可以考虑使用单例模式,将所有的axios请求都用一个函数封装一层。...统一可以在这个函数中catch捕获接口调用时候未知错误,伪代码如下: function ajax(url,data,method='get'){ const promise = axios[method...错误边界是一种 React 组件,这种组件可以捕获并打印发生在其子组件树任何位置 JavaScript 错误,并且,它会渲染出备用 UI,而不是渲染那些崩溃了子组件树。...错误边界在渲染期间、生命周期方法和整个组件树构造函数捕获错误。

1K20

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

如果我们失败了,或者决定不捕获它,异常可以在堆栈中自由冒泡。 使用 Promise 来处理定时器中异常 使用定时器或事件无法捕获从回调引发异常。...(); } 只要在函数前面加上async,该函数就会返回一个Promise。...; 当从 async 函数抛出异常时,我们就可以使用 catch 来捕获。 最重要是,除了这种方式外,我们可以还使用try/catch/finally,就像我们使用同步函数所做一样。...使用 async generators 来处理错误 JavaScript中async generators是能够生成 Promises 而不是简单值生成器函数。...在JavaScript程序中,可以通过多种方式来捕获异常。 同步代码中异常是最容易捕获。相反,异步中异常需要一些技巧来处理。

2.2K20

按照 PromiseA+ 手写Promise,通过promises-aplus-tests全部872个测试用例

== Promise) { throw new TypeError("Promise must be called with new"); } // 1.2 判断参数fun是否是一个函数.../A+:2.3.1 如果promise和x引用相同对象,则抛出一个TypeError为原因拒绝promise。...执行fun函数 try { fun(resolve, reject); } catch (error) { // 这里需要捕获fun函数执行过程中可能出现错误;如果fun函数执行出错...从大方面来说,then方法中主要做了 2 件事: 处理 onFulfilled 或者 onRejected 不是函数情况; 创建并返回一个 promise 实例; 2.1 利用包装函数将 onFulfilled...5.3 Promise.race // 需要注意是,如果Promise.race接收到一个空数组([]),则会一直挂起,而不是立即决议。

92530

JS 原生方法原理探究(十):如何手写实现 PromiseA+ 及相关方法?

要实现这个特性,实际上可以先判断传给 then 方法参数是不是函数,如果不是(包含没有传参情况),那么就自定义一个回调函数: onFulfilled 如果不是函数:定义一个返回 value 函数,...将 value 往下传递,由后面的成功回调捕获 onRejected 如果不是函数:定义一个抛出 reason 函数,将 reason 往下传递,由后面的失败回调捕获 因此改进 then 方法如下:...方法大致思路如下: 首先判断回调函数返回值 x 是否等于调用 then 之后返回值 promise2,如果相等,则直接返回一个 reject,拒因(reason)是一个 TypeError。...: 如果不是:则 x 绝不可能是一个 thenable,此时直接 resolve x 即可 如果是,再判断 x.then 是不是一个函数: 如果是:则 x 是一个 thenable,往后继续处理 如果不是...){ // 如果 promise2 和 x 是同一个对象,则会导致死循环 if(promise2 === x){ return reject(new TypeError(

67941

字节前端面试题

,也就是说当下一个开发者接触这一段不是他自己写代码时,他可以更好利用代码组织反推出实际业务逻辑,或者根据业务逻辑更好理解代码。...Promise构造函数接受一个函数作为参数,该函数两个参数分别是resolve和reject。...第一个回调函数Promise对象状态变为resolved时调用,第二个回调函数Promise对象状态变为rejected时调用。其中第二个参数可以省略。...then方法返回一个Promise实例(不是原来那个Promise实例)。因此可以采用链式写法,即then方法后面再调用另一个then方法。...(Responsive Web design)是一个网站能够兼容多个终端,而不是为每一个终端做一个特定版本。

1.7K20

【Nodejs】994- 一文搞懂koa2核心原理

_name || mw.name return converted } 复制代码 首先针对传入参数mw作校验,如果不是函数则抛异常,如果不是generator函数则直接返回,如果是generator...对父Promise对象进行resolve 以上工作完成后,就形成了一个类async函数。...异步函数统一错误处理机制 在koa框架中,有两种错误处理机制,分别为: 中间件捕获 框架捕获 undefined 中间件捕获是针对中间件做了错误处理响应,如fnMiddleware(ctx).then...因为async函数返回一个Promise对象,如果async函数内部抛出了异常,则会导致Promise对象变为reject状态,异常会被catch回调函数(onerror)捕获到。...如果await后面的Promise对象变为reject状态,reject参数也可以被catch回调函数(onerror)捕获到。

54910
领券