Comments (4)
Salut Thierry,
Non, mon module ne va pas retourner un objet alors qu'une erreur s'est produite, ça n'a aucun sens.
En revanche, tu as raison sur le fait qu'il pourrait y avoir plus détails dans les erreurs.
On pourrait par exemple throw des erreurs custom qui ont un champ status et un champ data en plus du message existant.
Mon repo est ouvert aux pull request, je t'invite à en ouvrir une si tu le souhaites
P.S Tu peux utiliser la syntaxe markdown pour formater tes blocs de code et tes titres parce que là c'est difficilement lisible. Par exemple :
Exemple titre
Exemple de code
from linky.
Bonjour Boris,
Personnellement, ça ne me choque pas d'avoir une vision générique et considérer qu'une erreur est une donnée comme une autre avec champs status valorisé et un champs data vide.
Mais je comprends et respecte ta vision puriste.
Voila en fait, pourquoi je défends cette vision. Dans le cas de l'appel de ton module dans une boucle de programmation, il y a selon moi 2 types d'erreur :
-les fatales, qui méritent la sortie de la boucle
[cas du refresh token qui ne fonctionne pas]
-les mineures souvent temporaires, qui méritent de rester dans la boucle, et donc de relancer la requête (après la temporisation)
[cas connu ;-) de récupération trop tôt des données de la veille]
Mais on peut évidemment procéder autrement et ta solution "throw des erreurs custom qui ont un champ status et un champ data en plus du message existant" peut constituer un bon compromis 👍
Peux-tu juste me donner un exemple de syntaxe; je soumettrai une pull request après quelques jours de vacances...
Merci de l'échange et de la qualité de tes réponses.
from linky.
Effectivement, il y a 2 façons de voir les choses, tu as tout à fait raison.
Un bon parallèle serait la librairie axios par rapport l'API fetch de JavaScript, qui servent tous les deux à faire des requêtes HTTP.
- fetch a pris le parti de n'envoyer une erreur que si la requête ne peut pas être faite. Si elle reçoit un code 500, elle ne throw rien du tout
- axios, quant à lui, throw une erreur personnalisée du moment que le code de retour n'est pas 2XX.
Résultat: Beaucoup de développeurs galèrent avec fetch car il faut gérer plusieurs formats de réponse dans le cas nominal, et la gestion des erreurs est un vrai casse tête.
Je suis plutôt partisan de l'approche d'axios: si il y a une erreur, quelle qu'elle soit, je la catégorise comme une erreur.
Si toi, en tant qu'utilisateur de ma librairie, a envie de faire un traitement personnalisé en fonction des erreurs, libre à toi de catch
cette erreur et de choisir quoi faire avec, mais ce n'est pas la responsabilité de la lib de déterminer si une erreur est "fatale" ou "mineure", cela dépend complètement de ton cas d'usage.
Par exemple, mon outil linky en ligne de commande n'a pas de notion de "fatale" ou "mineure", il s'arrête en cas d'erreur et affiche le problème, quelle que soit l'erreur
Le traitement serait différent si c'était un serveur domotique par exemple.
from linky.
Si tu veux créer une Erreur custom, tu peux suivre ce wiki par exemple, ou bien chercher sur Google quelque chose comme "extend Error typescript".
Tu pourras ensuite throw new MaCustomError
avec des détails en plus
Bonne journée et merci à toi aussi pour l'échange !
from linky.
Related Issues (20)
- Erreur durant la conversion du JSON HOT 4
- requête : erreur 500 sans NodeJS HOT 3
- Génération de tokens impossible HOT 24
- Token non renouvelé pour second compteur Linky HOT 6
- "no measure found for this usage point" HOT 6
- "no measure found for this usage point" avec loadcurvprod HOT 3
- Executer "linky" dans un crontab HOT 9
- Utilisation du refresh token HOT 9
- [Feature request] Export au format CSV HOT 4
- Migration API : nouvelle version ? HOT 2
- Erreur depuis 2jours HOT 2
- Issue with 2.01 HOT 5
- Unexpected identifier HOT 6
- Erreur d'installation node module sur projet Symfony HOT 2
- "ADAM-ERR0069" HOT 6
- Conso API erreur ADAM-DC-0008 HOT 6
- Bloqué par Cloudflare HOT 7
- dist/bin/cli.js: line 1: import: command not found HOT 5
- Vous n'êtes pas connecté à votre compte Enedis HOT 26
- Erreur "Sorry, you have been blocked" HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from linky.