我想要try
一些东西:
try
0/0
我不在乎它是否失败,提出Exception
。但是将with
或finally
块留空会使文件无法解析。
这很有效,但写作并不好玩。
finally
null |> ignore
如何将with
/ finally
块(as)留空(尽可能)?
答案 0 :(得分:3)
每个表达式都必须有结果,try ... with
也不例外。评估try
部分并获得结果。但如果try
部分失败,则替换with
部分的结果。
如果您的try
部分为0/0
,则其结果类型为int
。因此,为了匹配类型,with
部分的结果也应为int
。想想当try
部分失败时整个表达式的结果应该是什么,并将其粘贴在那里:
let foo =
try 0/0
with _ -> 42
由于您说null |> ignore
有效,我必须断定您的try
部分实际上不是0/0
。 ignore
函数返回()
(类型为unit
的值),因此,如果with
部分适合您,那么您的try
部分必须是也返回unit
。如果是这种情况,您可以使用()
作为with
部分而不是null |> ignore
。
let foo =
try printfn "Let's pretend that printfn may fail"
with _ -> ()
作为参考,这是(大致)ignore
的定义方式:
let ignore x = ()