如何处理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
相关产品推荐
相关产品推荐

