Обычный способ обработки состояния ошибки в .NET - генерировать исключение:
public static double function(int a) {
if (a == 1) {
throw new ArgumentException("The value 1 is not accepted.");
}
return (double)a;
}
Исключительная ситуация будет обнаружена кодом, вызывающим метод, или где-то в другом месте. Это зависит от вызывающего кода, чтобы обработать его на соответствующем уровне.
Обычно методы для очистки входных данных таким образом, чтобы любые ошибочные значения обнаруживались раньше, а не вызывали ошибку позже в коде, где намного сложнее отследить.