【问题标题】:How to throw an exception and exit the program in Haskell?如何在 Haskell 中抛出异常并退出程序?
【发布时间】:2011-08-29 13:03:39
【问题描述】:
我有一个问题:如何抛出异常并退出程序?我写了一个简单的例子:
-- main.hs
import Test
main = do
Test.foo ""
putStrLn "make some other things"
这是模块:
moldule Test where
foo :: String -> IO ()
foo x = do
if null x
then THROW EXCEPTION AND EXIT MAIN else putStrLn "okay"
我想启动它并抛出异常并退出程序,但是如何?
【问题讨论】:
标签:
exception
haskell
throw
【解决方案1】:
嗯,你可以试试
foo :: String -> IO ()
foo x = do
if null x
then error "Oops!" else putStrLn "okay"
或者,如果您打算最终捕获错误,那么
import Control.Exception
data MyException = ThisException | ThatException
deriving (Show, Typeable)
instance Exception MyException
...
foo :: String -> IO ()
foo x = do
if null x
then throw ThisException else putStrLn "okay"
您通常可以使用更简单的机制,例如返回包装在 Maybe 类型或其他描述故障的结构中的值。在返回复杂类型会使其他可重用接口过于复杂的情况下,异常似乎更适合。