85
votes

I've seen people suggesting sys.exit() in Python. My question is that, is there any other way to exit the execution of current script, I mean termination, with an error.

Something like this:

sys.exit("You can not have three process at the same time.")

Currently my solution would be:

print("You can not have three process at the same time.")
sys.exit()
4
Raise an exception instead? And for error messages like that, I'd write to sys.stderr instead: print('You can not have three processes at the same time.', file=sys.stderr), and use sys.exit(1) to indicate an error exit code. - Martijn Pieters

4 Answers

102
votes

Calling sys.exit with a string will work. The docs mention this use explicitly:

In particular, sys.exit("some error message") is a quick way to exit a program when an error occurs.

35
votes

There are 3 approaches, the first as lvc mentioned is using sys.exit

sys.exit('My error message')

The second way is using print, print can write almost anything including an error message

print >>sys.stderr, "fatal error"     # Python 2.x
print("fatal error", file=sys.stderr) # Python 3.x

The third way is to rise an exception which I don't like because it can be try-catch

  raise SystemExit('error in code want to exit')

it can be ignored like this

try:
  raise SystemExit('error in code want to exit')
except:
  print("program is still open")
15
votes

I know this is an old thread, however you can also raise an error like this:

raise SystemExit('Error: 3 processes cannot run simultaneously.')

One advantage of this approach is that you don't have to import the Python sys module. This works on Linux with Python 3 and Python 2. I have not tested it on Windows or Mac OS.

5
votes

You have to use import sys first

Then use sys.exit("your custom error message")