实际上,我的要求是突出显示在其特定的js函数中有错误的块。
我们正在使用Blockly
开发这些块。假设我在Blocky中应用了一个逻辑(函数),那么这些块将被解析为js。
然后我需要一步一步地执行js,同时执行时间。如果我的逻辑(函数)中出现任何错误,我必须在块中突出显示该错误。
有没有可能得到错误的行号?
请看这个link。
发布于 2016-11-26 13:56:16
我在我的学士论文中也做了类似的事情。(我会分享这篇论文,但因为它是德语的,所以我认为它不会有太大帮助)。在那里,我从块生成PHP,启动它,然后希望使用户能够逐个块地遍历生成的代码。下面的代码并不是特定于Javascript的,所以你可能需要修改一些细节。假设生成的代码如下所示:
codeGeneratedByFirstBlock();
codeGeneratedBySecondBlock();
codeGeneratedByThirdBlock();
要跟踪哪个块是实际执行的块,我的简单解决方案是在生成调试代码时,让我的PHP生成稍微不同的代码:
setActualBlock(<idOfFirstBlock>);
codeGeneratedByFirstBlock();
setActualBlock(<idOfSecondBlock>)
codeGeneratedBySecondBlock();
setActualBlock(<idOfThirdBlock>)
codeGeneratedByThirdBlock();
诀窍是,codeGenerator知道它正在为其生成代码的块的id。因此,让Generator将这些知识正确地放入它正在生成的代码中。
因此,当某些codeGeneratedBy..Block()函数抛出异常时,您现在就知道它对应的是哪个块了,因为您以前保存过lasts块的id。您可能必须将codeGeneratedBy..Block()包装在一个函数中,该函数捕获异常,在没有异常时正常继续,但在有异常时突出显示实际的块。
无论如何,这里有一些警告:如果您不关心为调试而更改生成的代码,这是很好的。这意味着代码不会显示给用户,或者您并不关心代码是否具有“教育性”。当您有多线程代码或回调代码时,也可能会出现问题。在执行回调时,您可能已经使用另一个id调用了setActualBlockId(),该id与生成回调代码的块不对应。
https://stackoverflow.com/questions/35224543
复制相似问题