             if let baseJSON = map.context.json[map.key] {
                 try mapFromJson(baseJSON, toField: &field)
             } else {
-                throw NSError(domain: CRMappingDomain, code: 0, userInfo: nil)
+                let userInfo = [ NSLocalizedFailureReasonErrorKey : "Could not find value 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

            if let baseJSON = map.context.json[map.key] {
                try mapFromJson(baseJSON, toField: &field)
            } else {
                throw NSError(domain: CRMappingDomain, code: 0, userInfo: nil)
            }
        } catch let error as NSError {
            map.context.error = error

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

