Show more than one post on the main page excluding certain category

If you are altering main query then use pre_get_posts filter instead of WP_Query.

add_action('pre_get_posts','wpse224610_alter_query');
function wpse224610_alter_query($query){
      $cat_id = get_cat_ID('Featured articles');
      $exclude_cat_id = -$cat_id;
      if( !is_admin() && $query->is_main_query() ){
         $query->set( 'cat', $exclude_cat_id );
         $query->set( 'posts_per_page', 4 );
      }
}

And the main loop will be

if( have_posts() ):
    while( have_posts() ): the_post();
       //The loop
    endwhile;
endif;

Check the return value of $cat_id , is it 0 or Featured articles category id ? check whether you spelled category name correctly as it is in the admin ?

From your code i assume you are trying to do secondary loop but as you told it’s main loop , use above mentioned filter.

Read more