今天在代码里写了个空指针,一运行代码崩了,崩溃的原因是js是单线程的,如果代码出现空指针那么当前进程被阻塞了,导致页面崩溃,知道了原因,那么如果我们在可能出错的地方加上类似try···catch这种操作是不是就可以让进程持续下去呢,事实证明确实是这样的,查看了vue官方文档,找到了如下解决方案,下面详细介绍一下。
errorhander
- 用法
const errorHandler = (error, vm, info)=>{
window.console.error(vm);//vm是出错组件实例
window.console.error(error);//error参数包含错误信息可以锁定异常位置
window.console.log(info)//info是出错阶段,比说是在哪个生命周期出错或者处理函数出错
}
Vue.config.errorHandler = errorHandler;
Vue.prototype.$throw = (error)=> errorHandler(error,this);
- 版本支持情况
从 2.2.0 起,这个钩子也会捕获组件生命周期钩子里的错误。同样的,当这个钩子是 undefined 时,被捕获的错误会通过 console.error 输出而避免应用崩溃。
从 2.4.0 起,这个钩子也会捕获 Vue 自定义事件处理函数内部的错误了。
从 2.6.0 起,这个钩子也会捕获 v-on DOM 监听器内部抛出的错误。另外,如果任何被覆盖的钩子或处理函数返回一个 Promise 链 (例如 async 函数)