def find_first_failing(schema, conditions):
    """
    Find the first failing precondition if exists
    :param schema: data schema for testing preconditions
    :param conditions: analyzer's preconditions
    :return: None if all successful, else exception of the first failing precondition
    """
    for condition in conditions:
        try:
            condition(schema)
        except Exception as e:
            return e
    return None