La première solution est impossible dans un langage généraliste, car dans ces langages, c'est un problème indécidable.
Pourquoi?
La deuxième solution permet juste de cacher un bug
Pourquoi la division par zéro serait plus un bug que la division par 42 ? Pas évident et pourquoi un bug provoquerait systématiquement un crash complet d'un programme?
La différence pratique, c'est qu'en Go il y a une distinction au niveau langage entre une situation d'exception (issue d'une erreur de programmation) et une simple erreur à laquelle il est possible de réagir plus spécifiquement.
Je trouve que cette distinction rends très pénible d'utiliser des bibliothèques: on ne sait jamais si une fonction qu'on appelle peut faire crasher ou non le programme.
C'est aussi une question de pratique: la plupart des bibliothèques C n'utilisent que très rarement un équivalent du panic comme raise(SIGABRT).
Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board
[^] # Re: Ouaiche
Posté par devnewton 🍺 (site web personnel) . En réponse au lien "Rust vs. Go: Why They’re Better Together". Évalué à 2.
Pourquoi?
Pourquoi la division par zéro serait plus un bug que la division par 42 ? Pas évident et pourquoi un bug provoquerait systématiquement un crash complet d'un programme?
Je trouve que cette distinction rends très pénible d'utiliser des bibliothèques: on ne sait jamais si une fonction qu'on appelle peut faire crasher ou non le programme.
C'est aussi une question de pratique: la plupart des bibliothèques C n'utilisent que très rarement un équivalent du panic comme raise(SIGABRT).
Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board