对于像这样的JavaScript代码:
try {
MyJob.process();
} catch(e) {
console.log("Exception occur!");
}
我在Chrome或FireFox中运行代码,当异常发生时,会出现"异常的行号!"将在控制台中显示,但MyJob中的原始异常不会出现在那里。是否有任何解决方案显示异常发生的原始位置并保留我在此处写的try-catch?
答案 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 );
}
的错误处理的更多信息
如果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)
临时评论try
和catch
,然后使用Chrome(或Firefox)JavaScript调试工具。
//try {
MyJob.process();
/*} catch(e) {
console.log("Exception occur!");
}*/
确定问题后,删除注释以恢复原始错误处理。