如何优雅处理前端异常

412 阅读1分钟

一、需要处理哪些异常

  • js语法错误、代码异常
  • AJAX请求异常
  • 静态资源加载异常
  • Promise异常
  • Iframe异常
  • 跨域Script error
  • 崩溃和卡顿

二、处理方法

  1. try-catch:只能捕获到同步运行时错误。对异步错误无法处理,并且对语法错误(SyntaxError)也捕获不到
  2. window.onerror:能异步错误能捕获到,但是语法错误捕获不到,同时静态资源异常,接口异常都捕获不到
  3. 静态资源异常可以通过window.addEventListener('error', () => {})捕获,但是受兼容性影响
  4. Promise Catch:可以增加全局的window.addEventListener("unhandledrejection",() => {})方法监听。处理漏掉的没有被catch到的promise异常。
  5. vue中:Vue.config.errorHandler = () => {}
  6. react:componentDidCatch
  7. React error boundary:像组件一样使用即可,然后再componentDidCatch中根据错误渲染不同组件。

参考:如何处理前端异常​