Well, I can see that LazySeq does indeed catch and wrap all Exceptions in a RuntimeException. I also think I can work around it, but I'd like to know why this was done?
Was it necessary given the checked vs. unchecked exception system of Java? Is it because the exception generated by a lazy sequence may no longer be within the dynamic confines of the 'try' in which it was called and thus should be considered a runtime exception? Tim Snyder wrote: > Thanks for the replies. I'll have a look at the impl. of LazySeq > tonight and see if that helps. It sounds like it shouldn't be a > problem to work around though. Is there somewhere I can read that > gives an explanation or information about why this is done? > > On Aug 27, 9:33 am, Meikel Brandmeyer <m...@kotka.de> wrote: > > Hi, > > > > On Aug 27, 5:47 am, Tim Snyder <tsnyder...@gmail.com> wrote: > > > > > > > > > > > > > I'm trying to understand how laziness affects exception handling. I > > > keep finding my exceptions wrapped in RuntimeExceptions. > > > > > If I have code that just throws an exception, I get what I'd expect: > > > (throw (Exception. "Plain Exception")) --> > > > Plain Exception > > > [thrown class java.lang.Exception] > > > > > On the other hand if I make the exception lazy, it is always wrapped > > > in a RuntimeException: > > > (lazy-seq > > > [(throw (Exception. > > > "NotPlainException"))]) --> > > > java.lang.Exception: NotPlainException > > > [Thrown class java.lang.RuntimeException] > > > > > This of course makes it harder to deal with the exceptions. I've > > > looked through the stack traces but can't see any solution. Is this > > > due to the Java difference between checked and unchecked exceptions? > > > Is there a reasonable way to work around it? Doall has no effect. > > > > You can travel down the exception chain by means of .getCause. Do that > > until you find your Exception or maybe until the cause is not a > > RuntimeException anymore. If you didn't find something of concern > > rethrow the original exception. Does that make sense? > > > > Sincerely > > Meikel --~--~---------~--~----~------------~-------~--~----~ 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 Note that posts from new members are moderated - please be patient with your first post. 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 -~----------~----~----~----~------~----~------~--~---