页面错误拦截
为了更好定位vue页面内的语法错误,方便开发者调试、规避因页面错误引起的白屏,我们在银商小程序内引入了错误显示和拦截机制。
语法错误显示
当页面运行到语法错误点时,该页面顶部会显示语法错误信息如下:
语法错误信息包含以下三个部分:
- errCode: 错误类型编号。类型编号及对应用的说明可参照错误类型详情
- file: 当前出错的文件
- Exception: 错误栈输出。通常我们可以根据错误栈,快速定位到页面内出错的位置
错误类型详情
错误编号 | 说明 |
---|---|
-2013 | JavaScript execute error! |
-2001 | load so error |
-2003 | so size error, to reload apk so |
-2007 | system load so error,copy from APK also error! |
-2009 | JS params error! |
-2008 | transform JSON->OBJ error! |
-2012 | Native-> Call ->JS error! |
-2100 | createBody error |
-2101 | updateAttrs error |
-2102 | updateStyle error |
-2103 | addElement error |
-2104 | removeElement error |
-2105 | moveElement error |
-2106 | addEvent error |
-2107 | removeEvent error |
-2108 | createFinish error |
-2109 | refreshFinish error |
-2110 | scrollToElement |
-2111 | reloadPage |
-2112 | jscore Crash |
-2299 | js bundle download err |
-2203 | js bundle empty |
-1002 | js framework error |
-1003 | js reinit framework error |
错误拦截处理
错误拦截处理类似设备按键拦截操作,在根节点声明错误处理函数 @error=<errorFunction>
。 在错误处理函数内对页面错误进行处理,比如:跳转到错误页面。
示例如下:
<template>
<!-- 根节点声明错误处理函数errFunc -->
<div class="wrapper" @error="errFunc">
...
</div>
</template>
import umsApi from 'ums-api'
...
// errFunc的实现
errFunc (ret) {
umsApi.storage.setItem('errorData', ret) //存储错误信息,以便在error.js内取出处理
umsApi.navigator.push({'url':'error.js'}) //跳转到出错页面
}
...
注意
由于错误拦截是在根节点声明,所以在V-Dom挂载(mounted)前的操作错误不能被拦截到,比如beforeCreate,created,这两个生命周期的状态的语法错误将会在页面顶部显示。