cli errors throw exceptions instead of exiting