Catching unchecked exceptions is a code-smell and bad practice.

Item.getX(Upgrades) handles a null argument as "no-upgrades" so I guess the correct solution is:

Upgrades upgrades = (loadout != null)?(loadout.getupgrades()):(null);
item.getNumCriticalSltos(upgrades)  etc