c# - user defined illegal exception

I have this program where I'm supposed to return illegal triangle exception if sum of any 2 sides are greater than one. Where am i supposed to put the

if(side1 + side2 < side3)

throw new illegalTriangleException("Sum of any 2 sides not bigger than the other side");

if(side1 + side3 < side2)

throw new illegalTriangleException("Sum of any 2 sides not bigger than the other side");

if(side3 + side2 < side1)

throw new illegalTriangleException("Sum of any 2 sides not bigger than the other side");

in here? I'm not sure where to put it. Also i would like to know if my way of writing the code is correct?

class Triangle

{

public double side1, side2, side3;

public Triangle() { }

public Triangle(double s1, double s2, double s3)

{

side1 = s1;

side2 = s2;

side3 = s3;

}

public double Side1

{

get { return side1; }

set {

if (value<0)

side1 = value;

}

}

public double Side2

{

get { return side2; }

set {

if (value < 0)

side2 = value;

}

}

public double Side3

{

get { return side3; }

set

{

if (value < 0)

side3 = value;

}

}

}

class IllegalTriangleException : Exception

{

public IllegalTriangleException() : base ("Sum of any 2 sides is not greater than the other") { }

public IllegalTriangleException(string msg) : base("Sum of any 2 sides is not greater than the other" + msg) { }

public IllegalTriangleException(string msg, Exception innerException) : base("Sum of any 2 sides is not greater than the other" + msg, innerException){ }

}

class Program

{

static void Main(string[] args)

{

try

{

Console.WriteLine("Length of side: ");

double side1 = Convert.ToDouble(Console.ReadLine());

double side2 = Convert.ToDouble(Console.ReadLine());

double side3 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Your triangle is puuuuurfect");

}

catch (IllegalTriangleException ex)

{

Console.WriteLine(ex.Message);

}

}

}

网友答案:

First of all.

Properties are public and internal fields should be private. Read this guide https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx?f=255&MSPPError=-2147217396)

You should first make an instance of your Triangle with the Triangle(double s1, double s2, double s3) constructor. In that constructor you can call the private CheckForIllegalTriangle() to check the side lengths. This will then throw your exception if there is a fault.

Make the default constructor private. So you dont have to worrie about calling the CheckForIllegalTriangle().

(Note I've also swapped < for <=, and fixed the negative lengths checks)

网友答案:

Here is what I would do:
By keeping the fields private you ensure that any value assignment to them will be only by using the appropriate properties.
Note that the constructor is assigning the first and second values to the fields and the third to the property to check for illegal triangles.