重复的异常错误

时间:2017-04-13 20:30:01

标签: purescript

尝试从catch(AutoMapperMappingException mappingException) { BuildNewError(mappingException.Context.MemberName); } 内致电Eff

Aff

这让我复制:

import Prelude
import Control.Monad.Aff (Aff, launchAff)
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Class (liftEff)
import Control.Monad.Eff.Console (CONSOLE, log)
import Control.Monad.Eff.Exception (EXCEPTION)

f :: forall eff. Int -> Aff (exception :: EXCEPTION) String
f i = pure $ show i

g :: forall eff. Eff (console :: CONSOLE, exception :: EXCEPTION) Unit
g = void $ launchAff do
  s <- f 1
  liftEff $ log s

我该怎么办?使用purescript版本0.11.3。

1 个答案:

答案 0 :(得分:0)

这是因为launchAff的类型,其输入行中不包含exception标签。一种解决方案是在g的结果中包含标签两次:

forall eff. Eff ( console :: CONSOLE
                , exception :: EXCEPTION
                , exception :: EXCEPTION
                ) Unit

但这意味着您需要在catchException之外两次使用launchAff,这不是很自然。

另一种方法是在catchException的调用中使用launchAff删除标签。

第三种方法是报告purescript-aff回购中的错误,并尝试更改launchAff的类型。