we should throw semantic exception with ErrorMsg defined instead of returning empty string