2016-04-17 1 views
3

J'utilise tryCatch pour détecter les erreurs qui se produisent. Cependant, même si je les attrape et renvoie la valeur d'erreur appropriée, il semble que l'erreur soit toujours signalée dans les journaux de mon système de traitement par lots. Y a-t-il un moyen de supprimer complètement l'erreur et simplement de procéder à la gestion des erreurs que je fournis?tryCatch message d'erreur de suppression

+0

qu'est-ce que « renvoie la valeur d'erreur appropriée » signifie ici? Si vous renvoyez une erreur d'un gestionnaire d'erreur, il est logique qu'ils apparaissent. vous pourriez ne rien retourner 'tryCatch (expr, function (e) {})' (peut-être d'abord vérifier si 'e' répond à certaines conditions – jaimedash

+1

permettez-moi de clarifier: Je ne renvoie pas d'erreur explicitement depuis ma fonction gestionnaire d'erreurs. J'imprime le message via 'message (cond)' où 'cond' est la condition d'erreur.Est-ce la raison pour laquelle il est affiché, c'est-à-dire que le message envoie des choses à stderr au lieu de stdout? – Alex

+0

en d'autres termes: si je n'ai pas 'message (cond)' alors aucune erreur ne devrait être visible? – Alex

Répondre

2

Assurez-vous que vous ne renvoyez pas une erreur (1), ni (2) n'imprimez stderr dans votre code de gestion des erreurs. Notez un gotcha ici message envoie sa sortie à stderr.

Une façon minime remplit les deux conditions est tryCatch(expr, error = function(e) {})