You have to build a class with gen-class. Here's an example: ------------------------------------------------------- (ns com.infolace.format.InternalFormatException (:gen-class :extends Exception :init init :constructors { [ String Integer ] [ String ] } :state pos))
(defn- -init [msg level] [[msg] level]) ------------------------------------------------------- The deal on gen-class is that you actually need to compile the class files before they are useful. I use an ant task to do this. You can see it here: http://github.com/tomfaulhaber/cl-format/blob/0d436ab7026b74865df99bb26bafbbeed0726b4d/build.xml It's probably a better idea to have your class inherit from RuntimeException to avoid having it be rewrapped (though I think it sometimes gets rewrapped anyway). This happens because Clojure doesn't support checked exceptions (Rich has a very compelling explanation for this). In the end, I abandoned using custom exceptions. I was only using them to carry custom information. Instead, I bind an error function that takes the extra information as an argument and just I generate an exception using that function if I have an error. (Thanks to Chouser for brainstorming up that idea with me.) I would love to see a better thought out way to be able to selectively throw and catch since this is (to me) the big advantage of custom exceptions. Might be done with a variation of proxy. Hope that helps, Tom On Feb 4, 6:55 pm, Jeffrey Straszheim <straszheimjeff...@gmail.com> wrote: > Is there an easy way to create custom exception classes. Like in Java > where you do: > > public class MyOwnException {} > > I suppose there is a way to do it with gen-class, but gen-class looks > complicated. > > Can someone post a simple example? > > (btw, this would make a great macro in clojure.contrib. I'd write it > if someone tells me how to contribute a diff.) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---