Added exception handling

Moved by-product handling code into its own method since a recipe has a
container object as an ingredient but doesn't have the container set
LocalizationRegistry includes damage value in unlocalized name if the
item has subtypes