Je souhaite créer une fonction qui réalisera certaines actions si une erreur se produit.
Voici mon premier essai :
Code : Tout sélectionner
TRY <- function(EXPR) {
tryCatch(EXPR,
error=function(c) {
cat("There was at least one error when the following code was executed:\n", rep("-", times=30), "\n",
paste(deparse(substitute(EXPR, env=parent.env(environment()))), collapse="\n"),
"\n\n\n\nThe return R error is:\n", rep("-", times=30), "\n", conditionMessage(c),
"\n\nOr this one:\n", rep("-", times=30), "\n", geterrmessage())})}
TRY({ AA <- 52754
# QOZRJG MFGMLHRZ gvihnf
stop("zrignqlf") })
Je teste le code (EXPR) dans tryCatch() qui me permet d'evaluer le code et si une erreur se produit, l'évênement est capté et une action peut être effectuée.
Grâce à conditionMessage() ou geterrmessage() (je ne sais lequel des deux utiliser, puisque ne connaissant pas leurs différences) je récupère le message d'erreur.
Pour le contexte, je crée un script R qui analysera des données. Le script sera lancé par une interface codée en Windev. Si une erreur survient dans le script R, j'ai besoin de capter l'évênement pour pouvoir dire à l'utilisateur l'erreur (via tcltk:::tkmessageBox()) et à Windev que le script n'a pas aboutit et qu'il doit donc le relancer.
Mes questions :
1/ Comment (/Est-ce possible de) récupérer la ligne de commentaire via deparse(substitute()) ?
2/ Quelle est la différence entre conditionMessage() ou geterrmessage(), et lequel est le plus adapté pour ma thématique ?
3/ Toutes suggestions/commentaires sur le code actuel sont évidemment les bienvenues
Merci,
Bastien