Добавление семантики - Частные исключения v Системные исключения
Нет структурных различий между InvalidParam и StandardError - держу пари, что разработчик размещает свою семантику на InvalidParam. Это непослушно, потому что это просто смущает читателя.
Код объявляет вложенный класс InvalidParam для обработки исключений. Разработчик хочет иметь возможность создавать и восстанавливать исключения с помощью InvalidParam, а не StandardError - скорее всего потому, что он хочет различать системные исключения и их собственные.