J'écris parfois du code comme:
try doSomething()
catch e
handleError e
ce qui n’est pas ce à quoi devrait ressembler le code Nice et Clean de Coffeescript.
Y a-t-il un moyen d'écrire:
try doSomething()
catch e handleError e #<-- will not compile
Cela me permettrait d'économiser environ 33% des lignes de code dans mes instructions try/catch;)
L'écriture try/catch one-liners fonctionne comme un one-liners if-then ou un one-liners en boucle avec le mot clé then
:
try doSomething()
catch e then handleError e
finally cleanUp()
Vous pouvez même l'avoir sur une seule ligne si vous aimez:
try doSomething() catch e then handleError e finally cleanUp()
Affichage croisé de https://github.com/jashkenas/coffeescript/issues/2413 :
FWIW, j'ai découvert que tu pouvais écrire
try
compute something
catch error
handle error
unless error?
handle success
Cela est possible car CS place la variable de la clause catch
dans la portée environnante, ce que JS ne fait pas. On pourrait même avancer que dire que unless error?
est plus clair que else
(ce n'est pas une clause if
) et continue
(ce n'est pas une boucle) à cette position.
Les gens qui insistent sur les insignes peuvent même écrire
try compute something catch error then handle error unless error? then handle success
ce qui est un peu cool et un peu illisible.
Une clause finally
devrait être avant la unless
, bien sûr.