साझा करने के लिए टेम्पलेट संदर्भ त्रुटि का पता लगाना

लेखक:लेवियुआन, दिनांकः 2020-01-28 20:39:09
टैगः

उपयोग करने का तरीका, सबसे पहले इस टेम्पलेट लाइब्रेरी का संदर्भ लें प्रत्येक स्क्रिप्ट फ़ाइल में $.fileLineMark ((mainbar, 35) जोड़ें पहला पैरामीटरः फ़ाइल नाम दूसरा पैरामीटरः इस कोड पंक्ति का पंक्ति संख्या फ़ाइल में और यह सुनिश्चित करता है कि त्रुटि का पता लगाने से पहले कोड की यह पंक्ति निष्पादित हो अंत में, नीति कोड में main = $.tryfunc ((main) जोड़ा जाता है ताकि यह सुनिश्चित हो सके कि सभी कॉल try से गुजरें

यदि कोई नीतिगत त्रुटि रिपोर्ट की जाती है, तो स्वचालित रूप से एक लाल अक्षर दिखाई देता है जो बताता है कि कौन सी फाइल किस पंक्ति में है।

सिद्धांतः जेएस कोड लोड करने के लिए होस्ट करने का तरीका, सभी जेएस कोड को लोड करना है, जिसमें कक्षाएं शामिल हैं, एक बड़ी फ़ाइल में शामिल हैं; बड़ी फ़ाइल में प्रत्येक फ़ाइल का स्थान ढूंढें, और अंतिम त्रुटि के समय, उल्टा मेल खाता है, यानी विशिष्ट त्रुटि का पता लगाएं।

img


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)
    }
}


अधिक

घासयह दिलचस्प है, देखो।

घासयह संभव है, लेकिन यह उस समय नहीं था।

लेवियुआनहाहा, उल्टा सोचो कि आप अंदर क्या करते हैं - बिल्कुल सटीक नहीं है, लेकिन मददगार है।