Big +1 on exception vs. exiting directly.  I'll think we'll either want to change our CLI handling to a more exception friendly model, or parameterize the exit functions like I did in core.clj so we can test these paths.