2017-09-16 157 views
0

我正在建立一个网站,用户将输入图形数据,然后用cytoscape.js呈现。处理与cytoscape.js错误

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

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

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

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

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

我该如何去捕捉这些错误?

回答

0

这只是控制台中的警告。它不是一个例外,类型为Error。一般来说,Cytoscape不会为无效图JSON抛出异常。它包含有效的条目,它会警告你有关无效的条目,并继续进行,因此有必要由开发人员进行检查。

Cytoscape不得不呼吁几个团体,包括没有经验的科学家和有经验的程序员。我们发现,如果科学家得到一个小图JSON错误的例外,他们会轻易放弃该工具。所以例外是一个不起眼的东西。

如果你真的想抛出异常,你可以考虑添加一个可触发标志来判断警告是否在PR中抛出异常。截至今天,所有这些消息都通过error()warning()/util,所以你可以添加扔在那里。

Cytoscape不会执行用户输入验证。这通常取决于应用程序的执行情况,尤其是因为它可能包含业务逻辑。

+0

谢谢。我已经通过graph.js首先运行所有东西,以实际捕获图形并执行周期检测等,然后导出顶点和边以供细胞视图使用。这至少解决了我的使用案例。 – Syddraf