В следующем коде на Haskell:
data Cmd =
CmdExit |
CmdOther
deriving (Read, Show)
guiString2Cmd s =
(return (read s :: Cmd)) `catch` \(e :: SomeException) -> return CmdExit
Если я делаю :
guiString2Cmd "CmdOther"
, все работает нормально. Однако, если я сделаю :
guiString2Cmd "some wrong string"
, код вылетит вместо оценки CmdExit.
Как заставить код обрабатывать исключение, а не сбой?