Documentation

Cookies & confidentialité

Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Vous pouvez modifier vos préférences à tout moment depuis le 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.