They are not meaningless.  My shallow response would be that the GCSG says not to make them public.  My logical response is that the exception throwing is desirable.  If we just expose the map, and agent X tries to access a non-existent recipe, a new blank (garbage) composition pointer will be added to the map with that name - messing things up even if agent Y checks for membership of a recipe of the same name.  Also, in general, if an agent expects a recipe to be there that isn't, that is indicative of an improperly configured simulation and/or broken code - so the exception throwing is valuable.