3) Not 0)-2)2) A mix: I could leave the connect and readFile functions alone, but return IO (Nothing) if the decoding doesn't work out. Now we have: String -> IO (Maybe Connection)1) All exceptions: I could throw an exception if Nothing appears during decoding. The function looks the same: String -> IO ConnectionBoth readFile (from Bytestring) and connect (from mysql.simple) throw exceptions when things don't go their way, and decode uses maybe. I see four ways of handling these errors:How should I handle errors here?What this code intends to do is read a config from a file in JSON, decode the JSON, and then open a connection based the decoded info. This code doesn't compile for several reasons, but I've left it in this form because I believe it is the most convenient for approaching my question:Dear Haskellers,I've been working on variants of the following code:
connect_from_file :: String -> IO Connection
connect_from_file fi = do
s <- BL.readFile fi
cred <- (decode s :: Maybe Db_cred)
c <- connect . reformat_cred $ cred
return c
0) All typed errors: I could "capture" all the exceptions in Either types and use an EitherIO monad or transformer to automatically abort when a Left value appears. Now my function looks like: String -> IO (Either MyErrorType Connection)So what is the proper way to do things?Many Thanks,HillaryPS For what it is worth, I have read:
0) https://www.schoolofhaskell.com/user/commercial/content/exce . I'd love to get feedback on how to apply this article to my question if it is appropriate.ptions-best-practices
1) https://lexi-lambda.github.io/blog/2016/06/12/four-months-wi . From this article and others, I get the sense that there is great confusion in the community as to how to handle errors correctly, and worse yet, that different approaches are not easily compatible.th-haskell/
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners