Ответ 1
Да, если это совершенно необходимо, то выбросьте исключение. Вы не должны * бросать исключение позже.
Всегда помните "Fail Early Principle" . Концепция теперь не работает, поэтому вы не тратите время на отладку или не испытываете неожиданных системных функций.
В качестве альтернативы вы также можете вывести ArgumentException для "" и ArgumentNullException для null. В любом случае убедитесь, что вы выбрали действительное сообщение об исключении.
Всегда хорошая справочная статья для управления исключениями: Хорошие правила управления исключениями большого пальца
Боковое примечание о том, что сказал @Steve Michelotti (потому что я большой поклонник CodeContracts)
Contract.Requires<ArgumentNullException>(inputParemeter!= null, "inputparameter cannot be null");
Contract.Requires<ArgumentException>(inputParemeter!= "", "inputparameter cannot be empty string");
в качестве альтернативы
Contract.Requires<ArgumentNullException>(!string.IsNullOrEmpty(inputParemeter), "inputparameter cannot be null or empty string");