Passer au contenu principal
Pour signaler une erreur à AppSignal, interceptez l’erreur et transmettez-la à la fonction utilitaire sendError. Si vous utilisez TypeScript, pour utiliser la fonction utilitaire sendError, l’argument doit être une instance de Error ou ErrorEvent. C’est parce qu’en TypeScript, les variables interceptées sont de type unknown par défaut en mode strict depuis la version 4.4.
try {
  // do something that might throw an error
} catch (error) {
  if (error instanceof Error || error instanceof ErrorEvent) {
    appsignal.sendError(error)
    // handle the error
  }
}

// You can catch errors asynchronously by listening to Promises...
asyncActionThatReturnsAPromise().catch(error => appsignal.sendError(error))

// ...or by using async/await
async function() {
  try {
    const result = await asyncActionThatReturnsAPromise()
  } catch (error) {
    if (error instanceof Error || error instanceof ErrorEvent) {
      appsignal.sendError(error)
      // handle the error
    }

  }
}

// ...or in an event handler or callback function
events.on("event", (err) => { appsignal.sendError(err) })

Ajouter des métadonnées aux erreurs

Pour ajouter des métadonnées supplémentaires aux erreurs envoyées avec sendError, utilisez l’argument de fonction de rappel. Ce rappel reçoit le Span actuel pour l’erreur en argument et permet de le modifier avant qu’il soit envoyé aux serveurs AppSignal. Consultez la page de l’API Span pour plus d’informations sur toutes les données qui peuvent être définies sur un Span.
try {
  // do something that might throw an error
} catch (error) {
  appsignal.sendError(error, (span) => {
    span.setAction("MyCustomAction");
    span.setNamespace("custom_namespace");
    span.setTags({ tag1: "value 1", tag2: "value 2" });
  });
  // handle the error
}

Exceptions non interceptées

Les exceptions non interceptées ne sont pas capturées par défaut. Nous avons pris la décision de ne pas inclure cette fonctionnalité dans la bibliothèque principale en raison de la grande quantité de bruit provenant des extensions de navigateur, bloqueurs de publicités, etc., ce qui rend généralement les bibliothèques de ce type moins efficaces. Nous recommandons d’utiliser une intégration appropriée comme meilleur moyen de gérer les exceptions, ou, si vous préférez capturer les exceptions non interceptées, vous pouvez le faire en utilisant le package @appsignal/plugin-window-events en complément.

Encapsuler un bloc de code

La bibliothèque fournit une méthode pratique pour encapsuler un bloc de code et envoyer toute erreur levée dans celui-ci directement à AppSignal. Il s’agit de la méthode appsignal.wrap(), une fonction asynchrone qui renvoie une Promise. Une fonction doit être passée en argument contenant le code que vous souhaitez encapsuler.
try {
  await appsignal.wrap(() => {
    // catch any error from sync or async code here
  });
} catch (e) {
  // do something else with the error here, the
  // error has already been sent to AppSignal
}

// Alternative usage
appsignal
  .wrap(() => {
    // catch any error from sync or async code here
  })
  .catch((e) => {
    // do something else with the error here, the
    // error has already been sent to AppSignal
  });
Si une erreur est levée n’importe où dans cette fonction, nous retournons une promesse rejetée avec l’Error passée en argument au gestionnaire catch.

Ajouter des métadonnées aux erreurs encapsulées

Pour ajouter des métadonnées supplémentaires aux erreurs capturées et envoyées avec wrap, utilisez l’argument de fonction de rappel. Ce rappel reçoit le Span actuel pour l’erreur en argument et permet de le modifier avant qu’il soit envoyé aux serveurs AppSignal. Consultez la page de l’API Span pour plus d’informations sur toutes les données qui peuvent être définies sur un Span.
appsignal.wrap(
  () => {
    throw new Error("Test error");
  },
  (span) => {
    span.setAction("MyCustomAction");
    span.setNamespace("custom_namespace");
    span.setTags({ tag1: "value 1", tag2: "value 2" });
  },
);

Erreurs GraphQL

Si vous utilisez le client GraphQL urql, veuillez consulter la documentation de @appsignal/urql pour les instructions sur la façon de configurer le rapport d’erreurs depuis GraphQL.