2017-06-17 7 views
3

Dans Haskell, existe-t-il un moyen de quitter un programme avec un code d'erreur spécifié? Les ressources que j'ai lues pointent généralement vers la fonction error pour quitter un programme avec une erreur, mais il semble toujours terminer le programme avec un code d'erreur de 1.Haskell - quitte un programme avec un code d'erreur spécifié

[[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 
+4

Probablement vous devriez alors utiliser [ 'System.Exit'] (https: // hackage.haskell.org/package/base-4.9.1.0/docs/System-Exit.html). –

+0

@WillemVanOnsem Je pense que c'est ce que je cherchais. Merci. – martin

Répondre

9

Utilisation exitWith de System.Exit:

main = exitWith (ExitFailure 2) 

J'ajouterais des aides pour des raisons pratiques:

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

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