It seems to me we shouldn't return an empty value because it's not a name if it's empty.

However I'm not sure which solution would be the best: a) always using a try/catch block (even if an empty value is absolutely OK for some case) or b) just use "".equals(getHumanishName()) if an empty string isn't suitable in a particular case.

Another question is should we behave in this case in an exactly same way as a C implementation does.