簡體   English   中英

Haskell Sqlite3-捕獲異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM