Вопрос: Как проверить значения переменных в конструкторе?

Лучший ответ:
Необходимо чтобы при инициализации объекта (т.е. вызове конструктора) метод проверял сумму этих переменных и либо по новой запрашивал значения либо прерывал с ошибкой. 
а в чем трудности?
вы не привели полный синтаксис класса. но в общем случае достаточно int topA = 95;
int topB = 1;
int topC = 89; после создания класса, проверять ни чего не надо. а вот после манипуляций - да, возможно надо. но это уже уровень вашей ответственности, при написании логики (реализуйте свою цель, вот и все)

Худший ответ:
Необходимо чтобы при инициализации объекта (т.е. вызове конструктора) метод проверял сумму этих переменных и либо по новой запрашивал значения либо прерывал с ошибкой. 
Зачем?
Если нужно сделать всё в едином классе, то достаточно написать статический метод и в нём проверять, после чего уже создавать объект. Бросать исключения в конструкторе — плохая идея. Бросать исключения в принципе — идея неплохая, но они все должны быть уловлены блоками try-catch, с записью в лог или ещё куда.
Если стоит задача написать консольное приложение, который бы инициализировало класс с правильными значениями, то оно может выглядеть, к примеру, так:using System;
using System.Collections.Generic;
using System.Linq;

namespace Toster.Q561594 {
    public static class Extentions {
        public static string Join<T>( this IEnumerable<T> list, string separator = "," )
            => string.Join( separator, list );
        public static int[] ConvertConsoleInput( this string input, params char[] separators )
            => input.Split( separators, StringSplitOptions.RemoveEmptyEntries )
                        .Select( int.Parse )
                        .ToArray();
    }

    public class Triangle {
        public readonly int A;
        public readonly int B;
        public readonly int Y;

        public Triangle(int a, int b, int y) {
            A = a; B = b; Y = y;
        }

        public static bool IsValidAngles( int a, int b, int y )
            => a > 0 && b > 0 && y > 0 && ( a + b + y ) == 180;

        public override string ToString()
            => $"( {nameof( A )}: {A}, {nameof( B )}: {B}, {nameof( Y )}: {Y} )";
    }

    class Program {
        static void Main( string[] args ) {
            int[] temp;

            while ( true ) {
                Console.Write( "Enter three valid space separated angles and press Enter: " );
                try {
                    temp = Console.ReadLine().ConvertConsoleInput( ' ' );
                    if ( temp.Length != 3 )
                        throw new IndexOutOfRangeException($"Incorrect number of angles: {temp.Length}");
                    if ( Triangle.IsValidAngles( temp[0], temp[1], temp[2] ) )
                        break;
                    else
                        throw new InvalidOperationException( $"Incorrect angles: ( {temp.Join( ", " )} )" );
                    
                } catch ( Exception ex ) {
                    Console.WriteLine( "Error. " + ex.Message + Environment.NewLine );
                }
            }

            var triangle = new Triangle( temp[0], temp[1], temp[2] );

            Console.WriteLine( $"Valid triangle object was created: {triangle.ToString()}" );
            Console.ReadLine();
        }
    }
}
При работе в консоли это будет выглядеть как-то так:Enter three valid space separated angles and press Enter: i'm typing
Error. Input string was not in a correct format.

Enter three valid space separated angles and press Enter: 1 2 3
Error. Incorrect angles: ( 1, 2, 3 )

Enter three valid space separated angles and press Enter: 100 10000
Error. Incorrect number of angles: 2

Enter three valid space separated angles and press Enter:    5  100    75
Valid triangle object was created: ( A: 5, B: 100, Y: 75 )
Обрати внимание на статический класс Extentions, статические методы которого имеют у первого аргумента this. Это методы расширений, они позволяют расширять уже имеющиеся классы, как если бы у них существовали эти методы. StringSplitOptions.RemoveEmptyEntries в ConvertConsoleInput отбрасывает получившиеся пустые строки, поэтому вводить можно хоть «__4____152______24___», оно это превратит сначала в string[] { "4", "152", "24" }, а потом распарсит и выдаст int[] { 4, 152, 24 };