Si une erreur se produit lors de l'exécution d'un workflow, une exception est levée. Si l'exception n'est pas interceptée par le workflow lui-même (ou si le workflow lève une exception non interceptée par ailleurs), le workflow échoue et les informations relatives à l'exception sont affichées à la vue de l'utilisateur. Pour permettre une gestion correcte des erreurs, les exceptions doivent être interceptées et traitées. Dans l'exemple qui précède par exemple, une tentative de créer un partage dans un projet inexistant se solde par une exception non interceptée.
Exemple 22 Gestion des erreurs des workflowsCet exemple peut être modifié de manière à intercepter l'erreur et à créer le projet, dans l'hypothèse où il n'existe pas :
var workflow = { name: 'Create share', description: 'Creates a new share in a business unit', parameters: { name: { label: 'Name of new share', type: 'String' }, unit: { label: 'Business unit', type: 'ChooseOne', options: [ 'development', 'finance', 'qa', 'sales' ], optionlabels: [ 'Development', 'Finance', 'Quality Assurance', 'Sales/Administrative' ], } }, execute: function (params) { try { run('shares select ' + params.unit); } catch (err) { if (err.code != EAKSH_ENTITY_BADSELECT) throw (err); /* * We haven't yet created a project that corresponds to * this business unit; create it now. */ run('shares project ' + params.unit); run('commit'); run('shares select ' + params.unit); } run('filesystem ' + params.name); run('commit'); return ('Created new share "' + params.name + '"'); } };