exception之部分函数的 F# 异常处理
exmyth
阅读:101
2025-06-02 22:19:02
评论:0
我正在尝试编写一个函数,其中只有两个方法调用(方法是 unit -> unit)应该处理某个异常。行为应该是:
- 如果引发异常,则整个函数结束
- 函数继续(在异常处理程序之外)否则
起初我以为我可以使用一个函数,其中的语句包装在一个 try/with block 和一个延续中,但当然延续会从 block 内调用......我可能可以将语句包装在一个函数中并使用一个返回值以指示成功/失败,但是与下面的 C# 代码相比,这对我来说显得笨拙,它实现了我试图在 F# 中实现的目标。
SomeType MyMethod(string x)
{
...
try
{
foo();
bar();
}
catch(SomeException)
{
return null;
}
...
return ...;
}
请您参考如下方法:
是这样的吗?
// f <- foo(); bar(); etc...
// k <- unprotected continuation
let runProtected f k =
if try f(); true with _ -> false
then k()
else null
// sample from the question
let runProtected () =
if try
foo(); bar();
true
with _ ->
false
then unprotected()
else null
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



