use an ex-info rather than IllegalArgumentException to maintain
clojure-clr compatibility