You should throw ArgumentOutOfRangeExceptionin the constructor. (Be sure to include the parameter name in addition to the exception message)
Alternatively, you can also create a static method TryCreate:
public static bool TryCreate(int m, int n, out Rational result);
or
public static Rational? TryCreate(int m, int m);
false null, , ; int.TryParse.