未来[Scala中的[AppError,Option [User]]]
发布时间:2020-12-16 19:20:40 所属栏目:安全 来源:网络整理
导读:如标题中所述,使用此类数据结构是否有意义?让我逐一解释: Future – 表示异步计算 要么 – 传达已知错误 选项 – 表示可能不存在该值 看着这个我有点害怕.使用这种类型的组合是一个好习惯吗? 解决方法 我们来看一下解决方案空间: Success(Right(Some(use
如标题中所述,使用此类数据结构是否有意义?让我逐一解释:
> Future – 表示异步计算 看着这个我有点害怕.使用这种类型的组合是一个好习惯吗? 解决方法
我们来看一下解决方案空间:
Success(Right(Some(user))) => Everythig OK,got an user Success(Right(None)) => Everything OK,no user Success(Left(AppError)) => Something went wrong at app level Failure(Exception) => Something went wrong 这看起来非常富有表现力,但是当你尝试用其他调用组合这样的嵌套结构时,事情变得很难看(参见Converting blocking code to using scala futures),作为composingFuture的一个例子[Option [T]]) 所以在the principle of the least power之后, 让我们检查: Everythig OK,got an user => Success(user) Everything OK,no user => Failure(UserNotFoundException) (Application level exception) Something went wrong at app level => Failure(AppException) (Application level exception) Something went wrong => Failure(Exception) (System-level exception) 这种方法的唯一限制是API的用户需要知道异常,这在界面中没有自我记录.最重要的是拥有基于Futures的API将允许表达的monadic组合与其他基于Future的API. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |