Re: throwing exceptions
Bear in mind that exceptions are precisely that - use in exceptional situations.
You wouldn't throw an exception if you were checking if x>y but it turns out that x<y. You wouldn't use exceptions for that because it's sensible behaviour. However, if you're trying to save the result to a file and you don't have permission to access the area you're trying to save to, then that's an exceptional set of circumstances therefore throw an exception.
Sorry for the bad example, but you get the idea.
Master of common sense. If you don't like it, stop reading.