В одном приложении, над которым я работал, ситуация была такой:
Is the Hostname available? Yes, return that.
If the Host IP Address available? Yes, return that.
Else return `Unknown`.
Хотя в вашей ситуации (и, судя по всему, при использовании .NET), если это фатальная ошибка для вашего приложения, оно должно просто выдать любую ошибку, которая возникла в стеке. Если есть что-то, что вы действительно хотите вернуть вместо имени хоста, то было бы правильно перехватить исключение и восстановить.
Исключение «без головы», когда кто-то принял нулевое значение, должно быть выброшено в стек и не перехвачено, потому что это индикативный или неправильный код и должно быть исправлено при обнаружении.