use try+/catch from top of defmacro