【问题标题】:Handle errors with cytoscape.js使用 cytoscape.js 处理错误
【发布时间】:2017-09-19 23:37:57
【问题描述】:

我正在构建一个网站,用户将在其中输入图形数据,然后使用 cytoscape.js 进行渲染。

鉴于这是由用户数据支持的,可能存在他们放入无效数据的情况,特别是缺少目标的边缘。我想捕获这些数据并将其呈现给用户,以便他们修复错误。

目前,我在日志中收到此错误,但我无法弄清楚如何捕获数据。

Can not create edge `TableOfBooks>att` with nonexistant target `att`

我尝试将 cytoscape 构造函数包装在 try...catch... 块中,但它似乎没有捕捉到错误。

try {
  var cy = cytoscape(...);
} catch(err) {
  console.log("ERROR: " + err);
}

如何才能发现这些错误?

【问题讨论】:

    标签: cytoscape.js


    【解决方案1】:

    这只是控制台中的警告。 Error 类型的也不例外。通常,Cytoscape 不会为无效的图形 JSON 抛出异常。它包括有效的条目,它会警告你无效的条目,并且它会继续,以便开发人员检查一些东西。

    Cytoscape 必须吸引多个群体,包括经验不足的科学家和经验丰富的程序员。我们发现,如果科学家因小图 JSON 错误而出现异常,他们会很容易放弃该工具。所以例外是行不通的。

    如果你真的想要抛出异常,你可以考虑添加一个可切换标志来判断警告是否在 PR 中抛出异常。到今天为止,所有这些消息都通过error()warning()/util,所以你可以在那里添加投掷。

    Cytoscape 不进行用户输入验证。这通常取决于应用程序,特别是因为它可能包含业务逻辑。

    【讨论】:

    • 谢谢。我最终通过 graph.js 运行所有内容,以实际捕获图形并进行循环检测等,然后导出顶点和边以用于 cytoscape。这至少解决了我的用例。
    猜你喜欢
    • 2021-11-20
    • 2011-01-24
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多