[英]Haskell Sqlite3 - Catching exceptions
我想知道如果下面的代碼引發異常,如何捕獲異常
query_3 <- quickQuery' conn_1 "SELECT MAX(high) \
FROM historicalData " []
mapM_ (putStrLn . convertSqlValToString) query_3
我知道有可能使用名為“ catchSql”的東西,但不知道如何在上面的代碼中使用它
我現在無法對其進行測試,但是可以嘗試以下操作:
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
上它..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.