def exception_attribute(attribute, default = nil, &block)
      opts[attribute] || (exception && from_exception(attribute, &block)) || default
    end
def exception_attribute(attribute, default = nil, &block)
      opts[attribute] || (exception && from_exception(attribute, &block)) || default
    end
Gets a property named "attribute" of an exception, either from
 the #args hash or actual exception (in order of precidence).

 attribute - A Symbol existing as a key in #args and/or attribute on
             Exception.
 default   - Default value if no other value is found (optional).
 block     - An optional block which receives an Exception and returns the
             desired value.

 Returns attribute value from args or exception, otherwise default.