我有时写代码如下:
try doSomething()
catch e
handleError e
这不是什么好看和干净的coffeescript代码应该是什么样的。
有没有办法写:
try doSomething()
catch e handleError e #<-- will not compile
这会在我的try / catch语句中节省大约33%的代码行;)
答案 0 :(得分:41)
编写try / catch单行程序就像if-then one-liners或使用then
关键字循环单行:
try doSomething()
catch e then handleError e
finally cleanUp()
如果您愿意,甚至可以将它放在一行:
try doSomething() catch e then handleError e finally cleanUp()
答案 1 :(得分:0)
https://github.com/jashkenas/coffeescript/issues/2413的交叉发布:
FWIW,我发现你可以写
try
compute something
catch error
handle error
unless error?
handle success
这是可能的,因为CS将catch
子句的变量放入周围的范围,JS没有这样做。有人甚至可能会说,unless error?
比else
(这不是if
子句)和continue
(这不是循环)更清楚。
坚持oneliners的人甚至可以写
try compute something catch error then handle error unless error? then handle success
这有点酷,有点难以理解。
当然,finally
子句必须在 unless
之前