我正在尝试attempt
Aff
计算。请考虑以下代码:
result <-
pool # withPool \connection -> do
execute_ ("insert into user (email, password) values ('"
<> unwrap userInfo.email <> "', '" <> unwrap userInfo.password <> "')")
connection
# attempt
Aff
生成的attempt
稍后会使用runAff
运行。
尽管使用了attempt
,但withPool
中的错误会传播到runAff
的错误处理程序。
但是,如果在正在尝试的Aff
周围添加括号,则会按预期“捕获”错误:
result <-
(pool # withPool \connection -> do
execute_ ("insert into user (email, password) values ('"
<> unwrap userInfo.email <> "', '" <> unwrap userInfo.password <> "')")
connection)
# attempt
我在这里缺少什么,为什么这两个代码片段的行为不同?
答案 0 :(得分:1)
第一个代码段相当于
result <-
pool # withPool (\connection -> do
execute_ ...
# attempt)
而不是
result <-
pool # (withPool \connection -> do
execute_ ...)
# attempt