Je viens de lire cet article sur Panic/Recover in Go et je ne sais pas en quoi cela diffère de try/catch dans d'autres langues courantes.
Réponses
Trop de publicités?Panic/Recover sont des fonctions étendues. C'est comme dire que vous n'êtes autorisé qu'à un seul bloc try/catch dans chaque fonction et que l'essai doit couvrir l'ensemble de la fonction. Cela rend vraiment ennuyeux d'utiliser Panic/Recover de la même manière que java/python/c# etc. utilisent des exceptions. C'est intentionnel. Cela encourage également les gens à utiliser Panic/Recover de la manière pour laquelle il a été conçu. Vous êtes censé récupérer () à partir d'une panique (), puis renvoyer une valeur d'erreur à l'appelant.
Je pense que nous sommes tous d'accord pour dire que panic
est throw
, recover
est catch
, et defer
est finally
.
La grande différence semble que recover
va dans defer
. Pour en revenir aux termes traditionnels, cela vous permet de décider exactement à quel point de votre finally
vous voulez déranger catch
quoi que ce soit, ou pas du tout.