Name
分享模板引用错误追踪
Author
leviyuan
Strategy Description
使用方法,首先引用这个模板类库
在每一个脚本文件里面添加
在策略报错时,会自动有一行红字指出在哪个文件的哪一行
原理:托管着加载js代码的方式,是把所有的js代码,包含类库,合并成一个大文件载入;找出每个文件在大文件中的位置,最后报错时候,反向对应,即可知道具体报错的行号
Source (javascript)
var fileStartLine = []
$.fileLineMark = function(file, line) {
try{a=a+1}catch(ex){
var markline = parseInt(ex.stack.split('\n')[3].split('(__FILE__:')[1].split(')')[0])
fileStartLine.push([file, markline-line])
fileStartLine.sort(function(a, b){
return b[1] - a[1]
})
}
}
$.tryfunc = function(func) {
return function(a,b,c,d,e,f,g,h,i,j,k,l,m,n) {
try {
return func(a,b,c,d,e,f,g,h,i,j,k,l,m,n)
} catch(ex) {
if (ex.message == "execution timeout") {
Log("忽略机器人停止指令")
throw ex
return
}
var line = parseInt(ex.stack.split('\n')[2].split('(__FILE__:')[1].split(')')[0])
for (var ii = 0; ii < fileStartLine.length; ii++) {
if (line > fileStartLine[ii][1]) {
Log("catch error at " + fileStartLine[ii][0] + ":" + (line-fileStartLine[ii][1])+"#ff0000")
break
}
}
throw ex
}
}
}
function onTick() {
}
function main() {
$.fileLineMark("main", 41)
onTick = $.tryfunc(onTick)
while(true){
onTick()
Sleep(1000)
}
}
Detail
https://www.fmz.com/strategy/182793
Last Modified
2020-01-28 21:11:06