You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理Result.Map委托内Func抛出的异常?是否需新增FlatMap?

关于LanguageExt中Result.Map处理异常的问题

现有Result.Map代码实现

[Pure]
public Result<B> Map<B>(Func<A, B> f) =>
    IsFaulted 
        ? new Result<B>(Exception)
        : new Result<B>(f(Value));

当传入的Func f可能抛出异常时,该如何处理这种场景?

举个例子,假设我有如下代码:

public Result<string> DoFirst()
{
    return Result<string>("Good");
}

public Result<int> DoNext()
{
    var result = DoFirst();

    return result.Map<int>(_ =>
    {
        try
        {
            // 一些最终会抛出异常的不安全代码
            // throw new InvalidOperationException();
            return 200;
        }
        catch(Exception ex)
        {
            // return Result<int>(ex); // 不允许,必须返回int类型
            // return ex; // 不允许,必须返回int类型
        }
    });
}

如果不处理该异常会发生什么?

似乎当前的实现缺少类似FlatMap的方法,或者是不是我用错了类?


补充内容

我自己实现了FlatMap方法,代码如下:

[Pure]
public Result<B> FlatMap<B>(Func<A, Result<B>> f) =>
    IsFaulted 
        ? new Result<B>(Exception)
        : f(Value);

这个实现应该能解决我的问题,我是否应该提交一个Pull Request?

内容的提问来源于stack exchange,提问作者acmoune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:12:14