首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用JS解释器突出显示Blockly错误?

如何使用JS解释器突出显示Blockly错误?
EN

Stack Overflow用户
提问于 2016-02-05 20:41:45
回答 1查看 569关注 0票数 1

实际上,我的要求是突出显示在其特定的js函数中有错误的块。

我们正在使用Blockly开发这些块。假设我在Blocky中应用了一个逻辑(函数),那么这些块将被解析为js。

然后我需要一步一步地执行js,同时执行时间。如果我的逻辑(函数)中出现任何错误,我必须在块中突出显示该错误。

有没有可能得到错误的行号?

请看这个link

EN

回答 1

Stack Overflow用户

发布于 2016-11-26 21:56:16

我在我的学士论文中也做了类似的事情。(我会分享这篇论文,但因为它是德语的,所以我认为它不会有太大帮助)。在那里,我从块生成PHP,启动它,然后希望使用户能够逐个块地遍历生成的代码。下面的代码并不是特定于Javascript的,所以你可能需要修改一些细节。假设生成的代码如下所示:

代码语言:javascript
运行
复制
codeGeneratedByFirstBlock();
codeGeneratedBySecondBlock();
codeGeneratedByThirdBlock();

要跟踪哪个块是实际执行的块,我的简单解决方案是在生成调试代码时,让我的PHP生成稍微不同的代码:

代码语言:javascript
运行
复制
setActualBlock(<idOfFirstBlock>);
codeGeneratedByFirstBlock();
setActualBlock(<idOfSecondBlock>)
codeGeneratedBySecondBlock();
setActualBlock(<idOfThirdBlock>)
codeGeneratedByThirdBlock();

诀窍是,codeGenerator知道它正在为其生成代码的块的id。因此,让Generator将这些知识正确地放入它正在生成的代码中。

因此,当某些codeGeneratedBy..Block()函数抛出异常时,您现在就知道它对应的是哪个块了,因为您以前保存过lasts块的id。您可能必须将codeGeneratedBy..Block()包装在一个函数中,该函数捕获异常,在没有异常时正常继续,但在有异常时突出显示实际的块。

无论如何,这里有一些警告:如果您不关心为调试而更改生成的代码,这是很好的。这意味着代码不会显示给用户,或者您并不关心代码是否具有“教育性”。当您有多线程代码或回调代码时,也可能会出现问题。在执行回调时,您可能已经使用另一个id调用了setActualBlockId(),该id与生成回调代码的块不对应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35224543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档