我正在整理我的代码库,以便它可以在谷歌的闭包编译器上使用 ADVANCED_OPTIMIZATIONS 进行编译。
在正确设置此任务所需的调试环境(源映射文件、chrome、包装已编译的 js 文件)后,我偶然发现了 try catch 问题。在我的代码库中大量使用 try/catch 语句似乎适得其反。
在几乎所有方法和函数上,我都使用典型的 try { } catch(e) {ss.error(e);} 语句,其中 ss.error() 是一个通用错误处理程序,根据环境打印出调试内容或报告回到例外...
在熨烫我的代码库的过程中,当我遇到需要修复的错误时,会发生什么,而不是让 Chrome 报告有问题的文件和行,而是指向错误处理程序 ss.error()。因此让我无法回溯问题。然而, ss.error() 函数会打印出问题的来源:
错误!type:TypeError at Db (/jsc/compiled.js:547:246) msg:Cannot call method 'ka' of undefined source:
在我得到这些类型的错误后,我必须做两个步骤: 1. 摆弄第 547 char 246 行的编译代码,并尝试找出我的未编译代码中的哪一部分是指... 2. 找到它之后,删除 try/catch 块,这样我就可以直接更清楚地看到导致错误的原因......
我必须说我对这个工作流程不满意,需要找到一个替代方案,既可以让我正确捕获异常,又可以调试我的已编译和未编译代码,同时保持头脑清醒 =)
我正在考虑以某种方式使用 Line:CharPosition 信息来查询源映射并让 ss.error() 函数映射到我的未编译源代码......
想法?