Throw exception instead of returning error code
- Was incorrectly aborting after a non-error, so this also fixed a bug