     if let fromJson = T.fromJSON(json) {
         field = fromJson
     } else {
-        throw NSError(domain: CRMappingDomain, code: -1, userInfo: nil)
+        let userInfo = [ NSLocalizedFailureReasonErrorKey : "Conversion of JSON \(json) to type \(T.self) failed" ]
+        throw NSError(domain: CRMappingDomain, code: -1, userInfo: userInfo)
     }
 }
 

    if let fromJson = T.fromJSON(json) {
        field = fromJson
    } else {
        throw NSError(domain: CRMappingDomain, code: -1, userInfo: nil)
    }
}


            if let baseJSON = map.context.json[map.key] {
                try mapFromJson(baseJSON, toField: &field)
            } else {
                let userInfo = [ NSLocalizedFailureReasonErrorKey : "Value not present in JSON \(map.context.json) from keyPath \(map.key)" ]
                throw NSError(domain: CRMappingDomain, code: 0, userInfo: userInfo)
            }
        } catch let error as NSError {
            map.context.error = error
