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

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

随着前端页面承载功能越来越多,用户本地浏览器环境也错综复杂,因此即使有完善的测试,我们也无法保证上线的代码不会出错。在这种场景下,前端页面的监控就成了各个web项目必备的工具。...e.g: 下图是当使用了未定义的变量"foo",导致产生js运行时错误时的上报数据: ? 2、资源加载错误 这里的静态资源包括js、css以及image等。...3、未处理的promise错误 使用catch捕获的promise错误,往往都会存在比较大的风险。而编码时有可能覆盖的不够全面,因此有必要监控未处理的promise错误并进行上报。...像axios和jQuery等就是在xhr上的封装,而有些情况也可能会使用原生的fetch,因此对这两种情况都要进行捕获。 e.g: 下图是xhr请求接口返回400时捕获后的上报数据: ?...: a is not defined error.statck: TypeError: ReferenceError: a is not defined at http://xxxx.js:1:13 window.addEventListener

3.6K40

JS 面试总结 理论篇

JS为什么是单线程? 由于浏览器可以渲染DOM,JS也可以修改DOM结构,避免冲突,JS执行的时候,浏览器DOM渲染会停止。 两段JS不能同时执行。...console.log(e); // ReferenceError: c is not defined } 缺点:增加代码量和维护性,不适用于整个项目的异常捕获。...在MVVM框架中如果你一如既往的想使用window.onerror来捕获异常,那么很可能会竹篮打水一场空,或许根本捕获不到,因为你的异常信息被框架自身的异常机制捕获了。...使用Vue.config.errorHandler这样的Vue全局配置,可以在Vue指定组件的渲染和观察期间捕获错误的处理函数。这个处理函数被调用时,可获取错误信息和Vue 实例。...的 异常处理 -- Error Boundary 同样的在react也提供了异常处理的方式,在 React 16.x 版本中引入了 Error Boundary class ErrorBoundary

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

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

我们还会讲一下 JS 中内置的错误对象(Error, SyntaxError, ReferenceError等)以及如何定义定义错误。...try块包含我们需要检查的代码 关键字throw用于抛出自定义错误 catch块处理捕获的错误 finally 块是最终结果无论如何,都会执行的一个块,可以在这个块里面做一些需要善后的事情 1.1 try...JS 代码,例如try块中的以下代码在语法上是错误的,但它不会被catch块捕获。...noSuchVariable; // undefined variable }, 1000); } catch (err) { console.log("这里不会被执行"); } 捕获的...try块抛出错误后,也会执行finally块 如果没有catch块,错误将不能被优雅地处理,从而导致捕获的错误 1.4 try..catch..finally 建议使用try...catch块和可选的

2.5K20

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

ReferenceError: nam is not defined at :3:15 不能捕获到具体的语法错误,只有一个语法错误提示。...补充一点:window.onerror 函数只有在返回 true 的时候,异常才不会向上抛出,否则即使是知道异常的发生控制台还是会显示 Uncaught Error: xxxxx window.onerror...'); console.error(err); console.error(vm); console.error(info);} 八、React 异常捕获 React 16 提供了一个内置函数 componentDidCatch...:error boundary UI 的某部分引起的 JS 错误不应该破坏整个程序,为了帮 React 的使用者解决这个问题,React 16 介绍了一种关于错误边界(error boundary)的新观念...实际上,大多数情况下我们可以在整个程序中定义一个 error boundary 组件,之后就可以一直使用它了!

94010

如何优雅处理前端异常?

捕获到异常:ReferenceError: nam is not defined at :3:15 不能捕获到语法错误 我们修改一下代码,删掉一个单引号: try {...补充一点:window.onerror 函数只有在返回 true 的时候,异常才不会向上抛出,否则即使是知道异常的发生控制台还是会显示 Uncaught Error: xxxxx window.onerror...'); console.error(err); console.error(vm); console.error(info); } React 异常捕获 React 16 提供了一个内置函数...UI 的某部分引起的 JS 错误不应该破坏整个程序,为了帮 React 的使用者解决这个问题,React 16 介绍了一种关于错误边界(error boundary)的新观念。...实际上,大多数情况下我们可以在整个程序中定义一个 error boundary 组件,之后就可以一直使用它了!

1.6K20

如何优雅处理前端异常?(史上最全前端异常处理方案)

捕获到异常:ReferenceError: nam is not defined at :3:15 不能捕获到具体的语法错误,只有一个语法错误提示。...补充一点:window.onerror 函数只有在返回 true 的时候,异常才不会向上抛出,否则即使是知道异常的发生控制台还是会显示 Uncaught Error: xxxxx window.onerror...'); console.error(err); console.error(vm); console.error(info); } 八、React 异常捕获 React 16 提供了一个内置函数...info); } 除此之外,我们可以了解一下:error boundary UI 的某部分引起的 JS 错误不应该破坏整个程序,为了帮 React 的使用者解决这个问题,React 16 介绍了一种关于错误边界...实际上,大多数情况下我们可以在整个程序中定义一个 error boundary 组件,之后就可以一直使用它了!

2.9K10

面试官:用一句话描述 JS 异常是否能被 try catch 捕获到 ?

所以,我们要做一个 “安全感” 高的码农[狗头][狗头][狗头] ---- 面试官:麻烦用一句话描述 JS 异常是否能被 try catch 到?...面试者:异步方法无法捕捉到…… 面试官:不要背答案,麻烦用一句话描述 JS 异常是否能被 try catch 到!...面试者:沉默 ing ………… 面试者:能捕捉到的异常必须是线程执行已经进入 try catch 但 try catch 执行完的时候抛出来的。...: a is not defined 方法定义在外部,执行方法在 try 里面,能捕捉到异常 function d(){a.b;} try{ d(); }catch(e){ console.log...("error",e); } // output error ReferenceError: a is not defined 上述报错的时机,都是代码执行进入了 try catch ,执行 d()

1.1K30

前端异常的捕获与处理

ECMA-262 中定义了下列 7 种错误类型: Error:错误的基类,其他错误都继承自该类型 EvalError:Eval 函数执行异常 RangeError:数组越界 ReferenceError...:", { message, source, lineno, colno, error }); }; 同步错误可以捕获到,但是,请注意 window.error 无法捕获静态资源异常和 JS 代码错误...错误边界是 React 组件,它“捕获子组件树中的任何地方的 JavaScript 错误”,同时还记录错误并显示回退用户界面。...:17) at settle (settle.js:18) at XMLHttpRequest.handleLoad (xhr.js:62) 一般接口 401 就代表用户登录,就需要跳转到登录页,让用户进行重新登录...六、异常上报 即使我们前端开发完成后,会有一系列的 Web 应用的上线前的验证,如自测、QA 测试、code review 等,以确保应用能在生产上没有事故。

3.3K30

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

ECMA-262规范定义的七种错误类型: Error EvalError RangeError ReferenceError SyntaxError TypeError URIError Error Error...(6) React捕获异常 部分 UI 的 JavaScript 错误不应该导致整个应用崩溃,为了解决这个问题,React 16 引入了一个新的概念 —— 错误边界。...特定的错误信息,比如错误所在的生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件的渲染和观察期间捕获错误的处理函数。...从 2.4.0 起,这个钩子也会捕获 Vue 自定义事件处理函数内部的错误了。 从 2.6.0 起,这个钩子也会捕获 v-on DOM 监听器内部抛出的错误。...到项目中,使用的是React框架,React正好提供了一种捕获异常的机制(上文已提及)并做降级处理,但是细心的小伙伴发现了,react并不能捕获如下四种错误: 事件处理 异步代码(例如 setTimeout

1.1K40

浅析前端异常及降级处理

ECMA-262规范定义的七种错误类型: Error EvalError RangeError ReferenceError SyntaxError TypeError URIError Error Error...(6) React捕获异常 部分 UI 的 JavaScript 错误不应该导致整个应用崩溃,为了解决这个问题,React 16 引入了一个新的概念 —— 错误边界。...特定的错误信息,比如错误所在的生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件的渲染和观察期间捕获错误的处理函数。...从 2.4.0 起,这个钩子也会捕获 Vue 自定义事件处理函数内部的错误了。 从 2.6.0 起,这个钩子也会捕获 v-on DOM 监听器内部抛出的错误。...到项目中,使用的是React框架,React正好提供了一种捕获异常的机制(上文已提及)并做降级处理,但是细心的小伙伴发现了,react并不能捕获如下四种错误: 事件处理 异步代码(例如 setTimeout

1.4K10

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

ECMA-262规范定义的七种错误类型: Error EvalError RangeError ReferenceError SyntaxError TypeError URIError Error Error...(6) React捕获异常 部分 UI 的 JavaScript 错误不应该导致整个应用崩溃,为了解决这个问题,React 16 引入了一个新的概念 —— 错误边界。...特定的错误信息,比如错误所在的生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件的渲染和观察期间捕获错误的处理函数。...从 2.4.0 起,这个钩子也会捕获 Vue 自定义事件处理函数内部的错误了。 从 2.6.0 起,这个钩子也会捕获 v-on DOM 监听器内部抛出的错误。...到项目中,使用的是React框架,React正好提供了一种捕获异常的机制(上文已提及)并做降级处理,但是细心的小伙伴发现了,react并不能捕获如下四种错误: 事件处理 异步代码(例如 setTimeout

1.3K10

React基础(2)-深入浅出JSX

全称: javascript and XML 定义: 可拓展(自定义)标记性语言,基于javascript,融入了XML,我们可以在js中书写xml,使用JSX可以很好的描述UI在页面中应该呈现它应有的交互形式...()函数调用的第一个实参数的写法 import React from 'react'; // 引入react.js,并用import关键字定义实例化了一个React对象 import ReactDOM...会构建一个js对象来描述你的HTML结构信息,包括标签名,属性,子元素以及事件对象等,使用React一定要引入React,引入这个是为了解析识别JSX语法糖(React.createElement()...,这个的确是滴,JS水平高,是可以直接喊高价的 小结 JSX 是 JavaScript 语言的一种语法扩展,长得像 HTML,但并不是 HTML,附加了原生HTML标签不具备的能力,例如:自定义属性,以及后续的组件传值...UI界面显示什么样,取决于JSX对象结构,换句话说,取决于render()函数里面的return关键字后面返回的JSX内容结构 引入React.js是为了解析识别JSX语法,同时创建虚拟DOM,而引入

2.4K00

React学习(二)-深入浅出JSX

全称: javascript and XML 定义: 可拓展(自定义)标记性语言,基于javascript,融入了XML,我们可以在js中书写xml,使用JSX可以很好的描述UI在页面中应该呈现它应有的交互形式...()函数调用的第一个实参数的写法 import React from 'react'; // 引入react.js,并用import关键字定义实例化了一个React对象 import...'}, React.createElement( "input", { type:'text', autocomplete:"...,包括标签名,属性,子元素以及事件对象等 使用React一定要引入React,引入这个是为了解析识别JSX语法糖(React.createElement()函数的替代) 当然另一方面也是为了创建虚拟DOM...UI界面显示什么样,取决于JSX对象结构,换句话说,取决于render()函数里面的return关键字后面返回的JSX结构 引入React.js是为了解析识别JSX语法,同时创建虚拟DOM,而引入react-dom

2K30
领券