2017-09-16 6 views
0

Je construis un site Web où les utilisateurs entreront des données de graphe, qui sont ensuite rendues avec cytoscape.js. Étant donné que ceci est soutenu par des données d'utilisateur, il peut y avoir des cas où ils placent des données invalides, en particulier des bords qui ont des cibles manquantes. J'aimerais capturer ces données et les présenter à l'utilisateur afin qu'elles puissent corriger les erreurs.Gérer les erreurs avec cytoscape.js

Actuellement, j'obtiens cette erreur dans les journaux, mais je n'arrive pas à comprendre comment capturer les données.

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

J'ai essayé enroulant le constructeur Cytoscape dans un try ... catch ... bloc, mais il ne semble pas être attraper l'erreur.

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

Comment puis-je corriger ces erreurs?

Répondre

0

C'est juste un avertissement dans la console. Ce n'est pas une exception, de type Error. En général, Cytoscape ne lance pas d'exceptions pour le graphe JSON invalide. Il inclut des entrées valides, il vous avertit des invalides, et il continue ainsi donc il y a quelque chose pour le dev à inspecter. Cytoscape doit faire appel à plusieurs groupes, y compris les scientifiques inexpérimentés et les programmeurs expérimentés. Nous avons constaté que les scientifiques abandonneraient trop facilement l'outil s'ils obtenaient une exception pour les erreurs de petit graphique JSON. Donc, les exceptions sont un non-monnaie.

Si vous voulez vraiment des exceptions levées, vous pouvez envisager d'ajouter un indicateur togglable pour savoir si les alertes lèvent des exceptions dans un PR. À partir d'aujourd'hui, tous ces messages passent par error() ou warning() en /util, donc vous pouvez ajouter jeter là. Cytoscape ne fait pas de validation d'entrée par l'utilisateur.

C'est généralement à la hauteur de l'application à faire, d'autant plus qu'elle pourrait contenir une logique métier.

+0

Merci. J'ai tout d'abord exécuté graph.js tout d'abord pour capturer le graphe et faire la détection de cycle, etc., puis exporter les sommets et les arêtes à utiliser dans cytoscape. Cela résout mon cas d'utilisation au moins. – Syddraf