我有一个问题:如何抛出异常并退出程序?我写了一个简单的例子:
-- 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"
我想启动它并抛出异常并退出程序,但是如何?
最佳答案
嗯,你可以试试
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 类型或其他描述故障的结构中的值。在返回复杂类型会使其他可重用接口(interface)过于复杂的情况下,异常似乎更适合。
关于exception - 如何在 Haskell 中抛出异常并退出程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6070316/