一、需要处理哪些异常
- js语法错误、代码异常
- AJAX请求异常
- 静态资源加载异常
- Promise异常
- Iframe异常
- 跨域Script error
- 崩溃和卡顿
二、处理方法
- try-catch:只能捕获到同步运行时错误。对异步错误无法处理,并且对语法错误(SyntaxError)也捕获不到
- window.onerror:能异步错误能捕获到,但是语法错误捕获不到,同时静态资源异常,接口异常都捕获不到
- 静态资源异常可以通过window.addEventListener('error', () => {})捕获,但是受兼容性影响
- Promise Catch:可以增加全局的window.addEventListener("unhandledrejection",() => {})方法监听。处理漏掉的没有被catch到的promise异常。
- vue中:Vue.config.errorHandler = () => {}
- react:componentDidCatch
- React error boundary:像组件一样使用即可,然后再componentDidCatch中根据错误渲染不同组件。
参考:如何处理前端异常