У этого кода есть две проблемы:
Сначала вы генерируете исключение, а затем возврат - оператор return никогда не будет выполнен, поскольку исключение остановит выполнение остальной части метода., делая обратное утверждение излишним.
Во-вторых, вы не можете вернуть ноль, если тип возвращаемого значения - float;Вы должны изменить тип возвращаемого значения, чтобы быть с плавающей точкой?(см .: обнуляемые типы )
Так что либо, если это настоящая ошибка, так как вы ничего не можете сделать, просто исключение:
public float GetMaxX()
{
if(RawData == null)
throw new NullReferenceException();
//DO other stuff to find max X
return MAX_X; //as float
}
Или, в качестве альтернативы, верните ноль и отбросьте исключение:
public float? GetMaxX()
{
if(RawData == null)
return null;
//DO other stuff to find max X
return MAX_X; //as float
}
Лично, если RawData
значение ноль - это условие ошибки / исключительное обстоятельство, которое никогда не должно произойти, тогда я бы сказал, бросить исключение и обработатьисключение, если выброшено в вызывающем коде.
Альтернативный подход заключается в том, чтобы принудительно инициализировать RawData
через конструктор, сделать RawData
приватным (или, по крайней мере, установщиком) и вызвать там исключение.Оставляя любую другую логику внутри класса чистой от любых исключений, бросающих / проверяющих на ноль, поскольку можно предположить, что RawData
будет установлен ранее.
В результате чего-то будет выглядеть так:
public class DataPoints
{
private readonly PointF[] rawData; //raw measurement pairs
public float xMax; //max value on X axis
public float yMax; //max value on Y axis
public DataPoints(PointF[] rawData)
{
if (rawData == null)
throw new ArgumentNullException("rawData");
this.rawData = rawData;
}
public float GetMaxX()
{
//DO other stuff to find max X
return MAX_X; //as float
}
}