Raising Exception makes exception too unspecific, so it's impossible to distinguish between error cases in the user code. I think it is definitely worth to introduce an exception hierarchy into the project.