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 


标签:Exception
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号