Raise exception rather than using abort

I know you can catch `abort` with `SystemExit`, but it's odd to do that I think.  Is `ValueError` the best exception?