more about exceptions vs errors: http://stackoverflow.com/questions/1736146/why-is-exception-handling-bad