Documentation

Cookies

Nous utilisons les cookies afin de vous garantir la meilleure expérience sur notre site. Vous pouvez modifier vos préférences à tout moment en cliquant sur "Cookies" en pied de page.

Gestion des erreurs

Dans un environnement de données réelles, les champs peuvent être vides, les recherches peuvent ne rien trouver. Apprenez à gérer ces cas gracieusement.

Pourquoi gérer les erreurs ?

Une formule peut échouer pour plusieurs raisons :

  • Un champ optionnel n'est pas renseigné
  • Une recherche ne trouve aucun objet
  • Une opération sur une valeur nulle
  • Un accès à un champ qui n'existe pas

Sans gestion d'erreur, votre formule affichera un message d'erreur peu élégant. Avec une gestion appropriée, vous pouvez afficher une valeur par défaut ou un message clair.

❌ Sans gestion d'erreur

Erreur: Cannot read property 'email' of undefined

✓ Avec gestion d'erreur

Email non renseigné

SI.ECHOUE.RENVOYER

SI.ECHOUE.RENVOYER(expressionRisquee, valeurSecours)

Tente d'exécuter la première expression. Si elle échoue (erreur quelconque), retourne la valeur de secours à la place.

JavaScript
SI.ECHOUE.RENVOYER({{champ.risque}}, "valeur par défaut")

// Exemple: recherche qui peut échouer
SI.ECHOUE.RENVOYER(
  CHERCHER.OBJET(client, { id: {{commande.clientId}} }),
  null
)

// Exemple: calcul qui peut échouer
SI.ECHOUE.RENVOYER(
  {{total}} / {{quantite}},
  0
)

Cas d'utilisation

Recherche d'objet

JavaScript
// Sans gestion : erreur si aucun client trouvé
CHERCHER.OBJET(client, { email: {{email}} }).nom

// Avec gestion : retourne null si pas trouvé
var client = SI.ECHOUE.RENVOYER(
  CHERCHER.OBJET(client, { email: {{email}} }),
  null
);
SI EXISTE(client)
ALORS {{client.nom}}
SINON "Client inconnu"
FINSI

Accès à un champ profond

JavaScript
// Accès risqué : le client ou l'adresse peut ne pas exister
SI.ECHOUE.RENVOYER({{commande.client.adresse.ville}}, "Non renseignée")

Calcul avec données manquantes

JavaScript
// Somme qui peut échouer si le tableau n'existe pas
SI.ECHOUE.RENVOYER(SOMME({{commande.produits.prix}}), 0)

SI.VIDE.RENVOYER

SI.VIDE.RENVOYER(expression, valeurSecours)

Évalue l'expression. Si le résultat est null, vide ou undefined, retourne la valeur de secours.

JavaScript
SI.VIDE.RENVOYER({{client.telephone}}, "Non renseigné")

// Exemple: champ optionnel
SI.VIDE.RENVOYER({{client.email}}, "N/A")

// Exemple: tableau potentiellement vide
SI.VIDE.RENVOYER({{commande.notes}}, "Aucune note")

Différence avec SI.ECHOUE.RENVOYER

SI.ECHOUE.RENVOYER capture les erreurs d'exécution(exceptions, accès impossible).
SI.VIDE.RENVOYER gère les valeurs vides valides(null, chaîne vide, undefined).

Cas d'utilisation

Champs optionnels

JavaScript
// Téléphone optionnel
SI.VIDE.RENVOYER({{client.telephone}}, "Non communiqué")

// Email avec fallback
SI.VIDE.RENVOYER({{contact.email}}, {{contact.emailSecondaire}})

Valeurs par défaut

JavaScript
// Taux de TVA par défaut
var tva = SI.VIDE.RENVOYER({{produit.tauxTVA}}, 20);
{{produit.prixHT}} * (1 + tva / 100)

// Devise par défaut
var devise = SI.VIDE.RENVOYER({{facture.devise}}, "EUR");
CONCAT({{facture.total}}, " ", devise)

Affichage conditionnel

JavaScript
// Afficher le nom commercial ou la raison sociale
SI.VIDE.RENVOYER({{client.nomCommercial}}, {{client.raisonSociale}})

// Afficher la première valeur non vide
SI.VIDE.RENVOYER(
  SI.VIDE.RENVOYER({{contact.portable}}, {{contact.fixe}}),
  "Aucun téléphone"
)

Combiner les deux

Dans certains cas, vous aurez besoin des deux fonctions ensemble : d'abord gérer les erreurs, puis les valeurs vides.

JavaScript
// Rechercher un client, gérer l'erreur ET la valeur vide
var client = SI.ECHOUE.RENVOYER(
  CHERCHER.OBJET(client, { email: {{email}} }),
  null
);

var nomClient = SI.VIDE.RENVOYER({{client.nom}}, "Anonyme");
CONCAT("Client : ", nomClient)

Autre exemple avec un calcul complexe :

JavaScript
// Calcul du prix moyen avec double protection
var prix = SI.ECHOUE.RENVOYER(
  MOYENNE({{produits.prix}}),
  0
);

var prixAffiche = SI.VIDE.RENVOYER(prix, 0);

SI prixAffiche == 0
ALORS "Prix non disponible"
SINON CONCAT(FIXER.DECIMALES(prixAffiche, 2), " €")
FINSI

Exemples pratiques

Afficher une adresse complète avec champs optionnels

JavaScript
var ligne1 = SI.VIDE.RENVOYER({{client.adresse}}, "");
var ligne2 = SI.VIDE.RENVOYER({{client.complementAdresse}}, "");
var cp = SI.VIDE.RENVOYER({{client.codePostal}}, "");
var ville = SI.VIDE.RENVOYER({{client.ville}}, "");

var lignes = FILTRER([ligne1, ligne2, CONCAT(cp, " ", ville)], {{$}} != "");
SI COMPTER(lignes) > 0
ALORS JOINDRE(lignes, "
")
SINON "Adresse non renseignée"
FINSI

Calculer un total avec produits optionnels

JavaScript
var produits = SI.ECHOUE.RENVOYER({{commande.produits}}, []);

SI COMPTER(produits) == 0
ALORS "Aucun produit"
SINON
  var total = SOMME(TRANSFORMER(produits,
    SI.VIDE.RENVOYER({{$.quantite}}, 1) * SI.VIDE.RENVOYER({{$.prixUnitaire}}, 0)
  ));
  CONCAT(FIXER.DECIMALES(total, 2), " €")
FINSI

Récupérer le dernier commentaire

JavaScript
var commentaires = SI.ECHOUE.RENVOYER({{ticket.commentaires}}, []);

SI COMPTER(commentaires) == 0
ALORS "Aucun commentaire"
SINON
  var dernier = SI.ECHOUE.RENVOYER(commentaires[COMPTER(commentaires) - 1], null);
  SI.VIDE.RENVOYER({{dernier.texte}}, "Commentaire vide")
FINSI

Afficher les informations de contact

JavaScript
// Chercher le meilleur moyen de contact
var email = SI.VIDE.RENVOYER({{client.email}}, null);
var telephone = SI.VIDE.RENVOYER({{client.telephone}}, null);
var portable = SI.VIDE.RENVOYER({{client.portable}}, null);

SI EXISTE(email)
ALORS CONCAT("📧 ", email)
SINON SI EXISTE(portable)
ALORS CONCAT("📱 ", portable)
SINON SI EXISTE(telephone)
ALORS CONCAT("📞 ", telephone)
SINON "❌ Aucun contact disponible"
FINSI

Prochaine étape

Découvrez maintenant des exemples pratiques complets qui combinent tout ce que vous avez appris.