Существует некоторая система (в широком смысле этого слова).
В системе может существовать несколько (от 0 до бесконечности) объектов одного класса.
Всякий объект может либо обслуживаться системой, либо иметь специальный файл, в котором находится код, описывающий поведение объекта.
Каждый объект имеет ряд свойств, в том числе свойство "имя файла" - того самого файла [в котором находится код, описывающий ...].
Если в качестве имени файла указана пустая строка - объект обслуживается системой.
Также система предлагает пользователю специальные средства для настройки (установки "свойств") для каждого объекта, обслуживаемого системой. Для объектов, имеющих свой файл, эти средства настройки вшита в файл и извлекаются при необходимости оттуда.
Вопрос: что должен делать загрузчик объектов, если один из объектов требует файл, который на самом деле не существует.
Варианты:
1) Упасть с ошибкой, в которой будет говорится об отсутсвии файла.
2) Не обращать, добавить в таблицу объектов новую запись, но исполняемый код из файла не подгружать.
3) Не загружать "битый" объект.
4) Удалить сведения о "битом" объекте.
Изначально я хотел делать п.1.
Однако, в таком случае будет невозможно получить доступ к списку всех имеющихся в системе объектов, настроить какой-то из них, поправить "битый" или удалить его.
Вариант 2 - в такой случае можно будет получить список всех объектов и настраивать "здоровые". Но "битый" будет мёртво висеть, и его можно будет только удалить.
К тому же система не будет работать, если вдруг какая-то её часть требует работы битого объекта. А вероятность этого велика.
Вариант 3 - Будет создаваться впечатление что объект отсутсвует в системе. Однако вновь добавить его не получится из-за конфликта с "битым".
Вариант 4 Без комментариев.