我目前正在 safari(一个混合 iOS 6 应用程序)中调试。try catch 中错误的行号显示错误的行。报告的行号指向方法而不是错误的行。
为了说明,我将提供一个示例
1. var myFunc = function(){
2.
3. try{
4. //do some work
5. var i = undefined;
6. }
7. catch(e){
8. console.log(e.line);
9. }
10. //do some more work
11.
12. }
第 5 行将触发错误,变量 undefined 未定义。当应用程序运行时,报告的行错误将是第 1 行。因此它指向您发生错误的函数,而不是实际的行号。
有趣的是,当我打开调试器并在第 8 行放置断点时,它开始打印正确的行,即第 5 行。即使删除断点但保持调试器打开也会打印正确的行。一旦远程调试关闭,它就会恢复打印方法级别的行号。
这可能是 iOS Safari 问题,但非常奇怪。有任何想法吗?