javascript确定函数定义行号

时间:2018-01-18 15:25:25

标签: javascript exception-handling

这个问题是关于确定函数的行号>定义< 在其源文件中。只是要明确:

这不是关于确定来电者的行号 - 在那里,做到了。这不是关于确定CURRENT行号 - 在那里,做到了。它不是要检查函数的源代码 - 去那里,做到了。这不是关于在发生休息时找到文件的名称/网址以及当时犯罪者的那个文件中的行号 - 是那样做的。这不是关于使用Chrome / Firefox / DragonFly Dev Tools来定位罪犯。它不是关于PHP等原始源代码无法修改 - 只有异常处理程序(或传递函数/匿名函数的构造函数)。

上下文 - 代码已经存在于[来自] catch块的转储信息例程中。我试图抛弃特定的违规行。 我在源文件中有违规行号;我将违规函数的代码解析为行/行号。因此我有偏移INTO函数(通常是匿名函数)。如果我能以某种方式确定定义函数的行号(不强制另一个异常),那么偏移量允许我转储违规行。 但是,摩擦是从中计算偏移量的原因 功能。

确定这一点的执行上下文的可能性包括: 1)当(匿名)函数被引用/定义为构造函数的一部分时(注意:引用/定义,未调用) - 此时,如果>定义的行号<在其源中可以确定,它可以保存在对象中 正在构造,然后在异常处理程序中使用。 2)在异常处理程序中。

对于这个措辞感到抱歉,但有很多答案似乎(通过搜索启发式方法)解决了这个问题,但事实上,它们都没有解决这里的具体问题。

任何建议,任何建议,还是这种寻找独角兽? Thx(1138)

1 个答案:

答案 0 :(得分:0)

catch块中的可用信息中没有任何内容可以告诉您源文件中包含该catch块的函数的哪一行开始。我担心你确实正在寻找一只独角兽。

您可以在代码上使用预处理器,为您添加该信息,使用像Esprima这样的解析器,或者自己编写一个Babel插件来执行此操作。他们可以访问必要的语义和文本信息,将启动函数的源代码行号注入“转储信息”函数的调用中。