私は時々次のようなコードを書きます:
try doSomething()
catch e
handleError e
これは、すてきでクリーンなcoffeescriptコードがどのように見えるべきかではありません。
書く方法はありますか:
try doSomething()
catch e handleError e #<-- will not compile
これにより、try/catchステートメントのコード行の約33%が節約されます;)
Try/catchワンライナーの記述は、then
キーワードを使用してif-thenワンライナーまたはループワンライナーのように機能します。
try doSomething()
catch e then handleError e
finally cleanUp()
必要に応じて、それを1行で記述することもできます。
try doSomething() catch e then handleError e finally cleanUp()
https://github.com/jashkenas/coffeescript/issues/241 からのクロスポスト
FWIW、私はあなたが書くことができることを発見しました
try
compute something
catch error
handle error
unless error?
handle success
これは、CSがcatch
句の変数を周囲のスコープに入れるので可能ですが、JSはこれを行いません。 unless error?
は、その位置にあるelse
(これはif
節ではありません)とcontinue
(これはループではありません)のどちらよりも明確です。
ワンライナーを主張する人は書くことさえできます
try compute something catch error then handle error unless error? then handle success
これはややクールでやや読みにくいです。
もちろん、finally
句はunless
の前に前に移動する必要があります。