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é

ifError

expressionRisquee.ifError(valeurSecours)

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

JavaScript
champ.risque.ifError("valeur par défaut")

// Exemple: recherche qui peut échouer
findObject(client, { id: "{{commande.clientId}}" }).ifError(null
)

// Exemple: calcul qui peut échouer
(facture.total / commande.quantite).ifError(0
)

Cas d'utilisation

Recherche d'objet

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

// Avec gestion : retourne null si pas trouvé
let client = findObject(client, { email: "{{email}}" }).ifError(null
);
client.exists()
? client.nom
: "Client inconnu"

Accès à un champ profond

JavaScript
// Accès risqué : le client ou l'adresse peut ne pas exister
commande.client.adresse.ville.ifError("Non renseignée")

Calcul avec données manquantes

JavaScript
// Somme qui peut échouer si le tableau n'existe pas
commande.produits.prix.sum().ifError(0)

ifEmpty

expression.ifEmpty(valeurSecours)

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

JavaScript
client.telephone.ifEmpty("Non renseigné")

// Exemple: champ optionnel
client.email.ifEmpty("N/A")

// Exemple: tableau potentiellement vide
commande.notes.ifEmpty("Aucune note")

Différence avec ifError

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

Cas d'utilisation

Champs optionnels

JavaScript
// Téléphone optionnel
client.telephone.ifEmpty("Non communiqué")

// Email avec fallback
contact.email.ifEmpty(contact.emailSecondaire)

Valeurs par défaut

JavaScript
// Taux de TVA par défaut
let tva = produit.tauxTVA.ifEmpty(20);
produit.prixHT * (1 + tva / 100)

// Devise par défaut
let devise = facture.devise.ifEmpty("EUR");
facture.total.concat(" ", devise)

Affichage conditionnel

JavaScript
// Afficher le nom commercial ou la raison sociale
client.nomCommercial.ifEmpty(client.raisonSociale)

// Afficher la première valeur non vide
contact.portable.ifEmpty(contact.fixe).ifEmpty("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
let client = findObject(client, { email: "{{email}}" }).ifError(null
);

let nomClient = client.nom.ifEmpty("Anonyme");
"Client : ".concat(nomClient)

Autre exemple avec un calcul complexe :

JavaScript
// Calcul du prix moyen avec double protection
let prix = commande.produits.prix.average().ifError(0
);

let prixAffiche = prix.ifEmpty(0);

prixAffiche === 0
? "Prix non disponible"
: prixAffiche.toFixed(2).concat(" €")

Exemples pratiques

Afficher une adresse complète avec champs optionnels

JavaScript
let ligne1 = client.adresse.ifEmpty("");
let ligne2 = client.complementAdresse.ifEmpty("");
let cp = client.codePostal.ifEmpty("");
let ville = client.ville.ifEmpty("");

let lignes = [ligne1, ligne2, cp.concat(" ", ville)].filter(x => x !== "");
lignes.count() > 0
? lignes.join("\n")
: "Adresse non renseignée"

Calculer un total avec produits optionnels

JavaScript
let produits = commande.produits.ifError([]);

commande.produits.count() === 0
? "Aucun produit"
:
  let total = commande.produits.map(produit => produit.quantite.ifEmpty(1) * produit.prixUnitaire.ifEmpty(0)
  ).sum();
  total.toFixed(2).concat(" €")

Récupérer le dernier commentaire

JavaScript
let commentaires = ticket.commentaires.ifError([]);

commentaires.count() === 0
? "Aucun commentaire"
:
  let dernier = commentaires[commentaires.count() - 1].ifError(null);
  dernier.texte.ifEmpty("Commentaire vide")

Afficher les informations de contact

JavaScript
// Chercher le meilleur moyen de contact
let email = client.email.ifEmpty(null);
let telephone = client.telephone.ifEmpty(null);
let portable = client.portable.ifEmpty(null);

email.exists()
? "📧 ".concat(email)
: portable.exists()
? "📱 ".concat(portable)
: telephone.exists()
? "📞 ".concat(telephone)
: "❌ Aucun contact disponible"

Prochaine étape

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