前端
window.onerror劫持
每当代码在runtime时发生错误时,JavaScript引擎就会抛出一个Error对象,并触发window.onerror函数。并且Sentry对window.onerror函数进行了改写,在这里实现了错误监控的逻辑,添加了很多运行时信息帮助进行错误定位,对错误处理进行跨浏览器的兼容等等。
监听unhandledrejection事件
当我们使用Promise时,如果发生错误而我们没有去catch的话,window.onerror是不能监控到这个错误的。此时会触发unhandledrejection事件,只要我们监听这个事件,那么就能够监控到Promise产生的错误。
监听vue ErrorHandler方法
对于 Vue.js 的错误详细上报可以用vue官方提供的 Vue.config.errorhandler 方法,更清晰的获取vue中的运行报错信息以及获取报错场景的上下文参数和props,使得错误信息更加详尽。
基于react React Error Boundary
对于 react.js 的错误详细上报可以使用react官方提供的Error Boundaries的概念,基于componentDidCatch生命周期获取报错详细的上下文场景。