This discussion is extended and subsumed under Error Handling Phase Next
Currently it is not easy to create custom exceptions in Clojure. This requires
gen-class and thus AOT compilation with all its drawbacks. One approach to improve the situation was
clojure.contrib.condition. It defines a custom exception –
Condition – which may be equipped with arbitrary metadata. This makes it quite easy to handle errors with arbitrary context information without having to define custom errors.