Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Clojure client for Exceptional (http://getexceptional.com/)
Clojure
tree: e50112adba

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
src
test
.gitignore
README.md
project.clj

README.md

clj-exceptional

A Clojure client for Exceptional.

Usage

Lein / Cake

[clj-exceptional "0.7.0"]

Importing

(ns foo
  (:require [clj-exceptional :as cx]))

;; or

(ns foo
  (:use cljs-exceptional))

For the examples below I'll assume you're using the require method above.

Basic Usage

Set your key !! IMPORTANT !!:

(cx/key! "exceptional_app_api_key")

Post an exception (blocking):

(cx/post-exc (Exception. "something went wrong!"))

Post an exception (non-blocking using agents):

(cx/post-exc-async (Exception. "something went wrong!"))

"Catch" Macros

Wrap some code (catch-exc returns the caught exception):

(cx/catch-exc
  (op-throw-exception))

;; => #<Exception>

Wrap some code (rethrow-exc re-throws the caught exception):

(try
  (cx/rethrow-exc
    (op-throws-exception))
  (catch Exception e (println "Something went wrong!!!)))

;; => nil

Ring Handler

clj-exceptional contains ring handlers (wrap-exceptional-catch and wrap-exceptional-rethrow) that will add information from the request map to the post.

(def ring-app
  (-> routes
      (wrap-params)
      (wrap-file "resources/public")
      (wrap-file-info)
      (cx/wrap-exceptional-catch))

This will send an exceptional post containing request parameters such as :remote-addr, :uri, and :headers.

Contributing

Open up an issue or send me a pull request.

TODO

  • Expose more of ring request map entries, such as :scheme, :content-length, and :port.

License

Copyright (C) 2010 Zachary Kim

Distributed under the Eclipse Public License, the same as Clojure.

Something went wrong with that request. Please try again.