2017-06-17 52 views
3

在Haskell中,有沒有辦法用指定的錯誤代碼退出程序?我一直在閱讀的資源通常指向error函數用於退出帶有錯誤的程序,但似乎總是終止程序,其錯誤代碼爲1Haskell - 用指定的錯誤代碼退出程序

[[email protected] Haskell]$ cat error.hs 
main = do 
    error "My English language error message" 
[[email protected] Haskell]$ ghc error.hs 
[1 of 1] Compiling Main    (error.hs, error.o) 
Linking error ... 
[[email protected] Haskell]$ ./error 
error: My English language error message 
[[email protected] Haskell]$ echo $? 
1 
System.Exit
+4

也許你這時應該使用['System.Exit'(https://開頭hackage.haskell.org/package/base-4.9.1.0/docs/System-Exit.html)。 –

+0

@WillemVanOnsem我認爲這就是我正在尋找的。謝謝。 – martin

回答

9

使用exitWith

main = exitWith (ExitFailure 2) 

我想補充一些助手爲了方便:

exitWithErrorMessage :: String -> ExitCode -> IO a 
exitWithErrorMessage str e = hPutStrLn stderr str >> exitWith e 

exitResourceMissing :: IO a 
exitResourceMissing = exitWithErrorMessage "Resource missing" (ExitFailure 2)