尝试从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。
答案 0 :(得分:0)
这是因为launchAff
的类型,其输入行中不包含exception
标签。一种解决方案是在g
的结果中包含标签两次:
forall eff. Eff ( console :: CONSOLE
, exception :: EXCEPTION
, exception :: EXCEPTION
) Unit
但这意味着您需要在catchException
之外两次使用launchAff
,这不是很自然。
另一种方法是在catchException
的调用中使用launchAff
删除标签。
第三种方法是报告purescript-aff
回购中的错误,并尝试更改launchAff
的类型。