Because Clojure is on the JVM and interops with Java and exceptions are the provided error handling mechanism.
Exceptions are not spec'ed because specs are designed to specify the expected inputs and outputs of a function and exceptions are ... exceptions to that. (Generally, I don't feel that it would make sense to say much about the exception anyways, although the one place I sometimes want something is a spec for ex-data thrown.) I understand monadic errors are natural in other language communities, and certainly there is nothing stopping you from using that approach. But similarly, we're not going to add anything to spec for it. If it works for you, great! On Friday, October 26, 2018 at 4:22:36 AM UTC-5, Serzh Nechyporchuk wrote: > > Why exceptions are the pattern we encourage? So if I spec'ed my function > input, output and input-to-output there is no way to specify errors when > something goes wrong, because neither spec nor clojure does not allow you > to describe exception that can be thrown in your function. Returning > "monadic" errors feels very natural when you are using spec. > > On Friday, October 26, 2018 at 6:53:31 AM UTC+3, Alex Miller wrote: >> >> This is not a pattern that we encourage in Clojure. The standard >> mechanism for error reporting is exceptions, which are not spec'ed. >> >> On Thursday, October 25, 2018 at 8:46:54 PM UTC-5, Didier wrote: >>> >>> I've started to see a pattern in my spec like this: >>> >>> (s/or :success string? >>> :error ::error) >>> >>> And I've been tempted to create my own spec macro for this. But I also >>> thought, maybe Spec itself should have such a spec. >>> >>> (s/error <success-spec> <error-spec>) >>> >>> What do people think? >>> >> -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.