so cheExit tranquillamente (senza eccezioni) Haskell
exitWith ExitSuccess
esce dal programma, ma emette
*** Exception: ExitSuccess
Sono voler sapere se c'è modo di uscire senza emettere nulla sullo schermo?
so cheExit tranquillamente (senza eccezioni) Haskell
exitWith ExitSuccess
esce dal programma, ma emette
*** Exception: ExitSuccess
Sono voler sapere se c'è modo di uscire senza emettere nulla sullo schermo?
Espansione dei commenti sopra qui (Crediti a Reid, Bakuriu e Jeffrey). E 'altamente probabile che si sta eseguendo il seguente programma in ghci
:
import System.Exit
main :: IO()
main = exitWith ExitSuccess
Ora nel terminale:
$ ghci
λ> :load crash.hs -- crash.hs is the filename
λ> main
*** Exception: ExitSuccess
noti che ghci
e ghc
sono diversi. ghci
viene utilizzato come REPL per Haskell. Il codice di cui sopra, quando compilato ed eseguito come la seguente non produrrà alcun messaggio:
$ ghc -o crash crash.hs
$ ./crash
Si noti che il REPL viene richiamato attraverso il programma denominato ghci
. Per compilare e produrre un eseguibile, devi usare un eseguibile chiamato ghc
.
Quindi dovrei semplicemente ignorare l'output "*** Exception: ExitSuccess" che ghci produce e continua con il codice? – Ali
@ Sì Sì, puoi ignorarlo in 'ghci'. Non importa comunque. Tutto ciò che devi preoccuparti è lo stato di uscita del processo. E questo è '0' come previsto. – Sibi
Grazie. Ho accettato la tua risposta, che è un'aggiunta dei tre commenti precedenti. – Ali
Non dovrebbe stampare quello, cosa stai facendo esattamente? –
Stai eseguendo quel codice in ghci? Quando compilo * il codice non lo stampa, ma usando ghci mostra l'errore. Credo che sia perché ghci aggiunge un gestore di eccezioni personalizzato (in effetti non esce affatto!) – Bakuriu
Sto usando Haskell Platform, che credo funzioni in ghci. Ecco uno snippet del mio codice: se opt == 3, allora esci con ExitSuccess else ... – Ali