Fair enough [edit: distinction to make], but the problem is still the existence of exceptions (at least as something that doesn't always terminate the process, but that's implied by most useful definitions of "exception" anyway), not anything that would be true of a hypothetical alternate version of Haskell that still had IO, but didn't have exceptions.
Its a bit more that that. You need to be in IO in order to catch an exception.
That is to say, if you have:
There is no way to write: However, if you were to instead have: Such a function is possible to write, as you can now catch the exception and do something with it.