页面错误拦截

为了更好定位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)前的操作错误不能被拦截到,比如beforeCreatecreated,这两个生命周期的状态的语法错误将会在页面顶部显示。