Throwing exceptions is fine IMO, it makes it clear something went wrong, and eases up debugging when something goes bad (like the exception was thrown incorrectly) since it provides you with a stack trace.