throw errors not strings

not throwing errors makes it really hard to debug -- no traceback means grepping for the string printed to stdout, which isn't even guaranteed to work.