При настройке функции вы должны вернуть SomeObject
или вызвать исключение. Если вы хотите сделать что-то еще, вам нужно изменить функцию. Других вариантов нет.
Если SomeCondition
никогда не будет ложным, тогда вы можете удалить тест из кода и вместо него вставить assert
, либо вы можете оставить тест и вызвать исключение. (Я не рекомендую просто игнорировать такую возможность, поскольку «никогда не ложь» почти всегда означает «никогда не ложь, если что-то плохое не произошло и не было обнаружено», и если его стоит проверить в любых условиях, стоит его обнаружить.)
Существует возможность возврата какого-либо нулевого объекта. Для этого полезны указатели, поскольку существует очевидное нулевое значение, которое проверяет ложь, но вы можете передать флаг обратно в качестве параметра out или вернуть специальный объект, предназначенный для нулевого значения. Затем вам нужно будет проверять возвращаемое значение при каждом вызове, чтобы оно было значимым, и это вряд ли будет меньше хлопот, чем assert
или throw
.
Если бы я делал это, это зависело бы от SomeCondition
. Если он имеет побочные эффекты или его нетрудно рассчитать, протестируйте и сгенерируйте исключение, если false. Если вычисление обременительно, используйте assert
, чтобы вам не приходилось делать это на производстве, и забудьте об этом, кроме этого.