括号更改代码执行
问题描述:
我正在尝试attempt
和Aff
计算。请看下面的代码:括号更改代码执行
result <-
pool # withPool \connection -> do
execute_ ("insert into user (email, password) values ('"
<> unwrap userInfo.email <> "', '" <> unwrap userInfo.password <> "')")
connection
# attempt
所得的attempt
Aff
以后运行使用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
我是什么在这里失踪,为什么是这两个代码的行为代码片断有何不同?
答
第一个代码段相当于
result <-
pool # withPool (\connection -> do
execute_ ...
# attempt)
和不
result <-
pool # (withPool \connection -> do
execute_ ...)
# attempt