我想知道如果通过以下代码提出我将如何捕获异常
query_3 <- quickQuery' conn_1 "SELECT MAX(high) \
FROM historicalData " []
mapM_ (putStrLn . convertSqlValToString) query_3
我知道可以使用名为&#34; catchSql&#34; ,但不知道如何在上面的代码中使用它
答案 0 :(得分:1)
我现在无法测试,但请尝试以下方法:
handleSql print $ do
query_3 <- quickQuery' conn_1 "SELECT MAX(high) FROM historicalData" []
mapM_ (putStrLn . convertSqlValToString) query_3
使用
handleSql :: (SqlError -> IO a) -> IO a -> IO a
(只有catchSql :: IO a -> (SqlError -> IO a) -> IO a
,其参数被反转)。
函数handleSql
运行作为其第二个参数的操作,在您的情况下quickQuery'
后跟mapM_
。如果在该部分期间发生SqlError
,则将其传递给作为第一个参数给出的函数。因此,在上面的示例中,如果在内部阻止期间发生SqlError
,handleSql
将在其上调用print
..