What is the difference between calling sys.exit() and throwing an exception in Python?

Let's say I have a Python script which does the following:

  1. open a file
  2. read lines
  3. close it

If the file doesn't exist or an IOException gets thrown at runtime, which of the options below makes more sense?

  1. no except/catch of the exception, if exception occurs, it fails out (which is expected behaviour anyway)
  2. except/catch the exception, logs the error message, throw customized exception by myself, fails out.
  3. in an except IOException block, exit with an error message e.g. sys.exit("something is wrong")

Does option 3 kill the process while 1 and 2 do not? What's the best way to handle the Python exceptions given that Python doesn't have a checked exception like Java (I am really a Java developer ^_^)?

Edit
Report