0

对于这样的 JavaScript 代码:

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

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

4

2 回答 2

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
于 2013-01-05T06:02:56.853 回答
0

暂时注释掉tryand catch,然后使用 Chrome(或 Firefox)JavaScript 调试工具逐步执行。

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

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

于 2013-01-05T06:00:44.083 回答