js异常位置

时间:2013-01-05 05:58:34

标签: javascript debugging exception

对于像这样的JavaScript代码:

try {
    MyJob.process();
} catch(e) {
    console.log("Exception occur!");
}

我在Chrome或FireFox中运行代码,当异常发生时,会出现"异常的行号!"将在控制台中显示,但MyJob中的原始异常不会出现在那里。是否有任何解决方案显示异常发生的原始位置并保留我在此处写的try-catch?

2 个答案:

答案 0 :(得分:2)

window.onerror = function ( msg, url, num ) {
   alert ( "Error: " + msg + "\nURL: " + url + "\nLine: " + num );
   return true;
};

这将显示大部分错误。

在catch块中添加:

catch(e) {
    console.log( e.name + ": " + e.message );
}

有关JavaScriptkit

的错误处理的更多信息

如果try / catch块在函数内部,您可以利用arguments.callee mdn msdn

function foo() {
    try {
        someFunction();
    }
    catch (e) {
        var f = arguments.callee.toString().substr ( "function ".length);
        f = f.substr(0, f.indexOf('('));
        alert ( "Error type : " + e.name + "\nError : " + e.message + "\nIn function : " + f );
    }
}

结果将是:

Error type : ReferenceError
Error : someFunction is not defined
In function : foo

答案 1 :(得分:0)

临时评论trycatch,然后使用Chrome(或Firefox)JavaScript调试工具。

//try {
    MyJob.process();
/*} catch(e) {
    console.log("Exception occur!");
}*/

确定问题后,删除注释以恢复原始错误处理。