def construct_dict_from_source(fields, source):
    """
    Construct a new dict from a source dict and catch all KeyErrors, using predefined functions to extract desired 
    values from a source dictionary.
    
    :param fields: Dictionary with fields in the the target dict as keys and functions to extract their desired value .
        for these fields from the source dict
    :type fields: dict
    :param source: Source dictionary.
    :type source: dict
    :return: Target dictionary.
    :rtype: dict
    """
    new_dict = {}

    for field_name, getter_func in fields.items():
        try:
            new_dict[field_name] = getter_func(source)
        except KeyError:
            pass

    return new_dict