FWIW, если вы не создаете настраиваемое исключение из соображений взаимодействия, вы можете захотеть вместо этого использовать clojure.contrib.condition
. Он поставляется с предварительно скомпилированным пользовательским исключением, что вы копируете пользовательские данные на использование его API. Я смог избежать создания множества пользовательских исключений, используя вместо этого. Документы находятся здесь: http://clojure.github.com/clojure-contrib/condition-api.html
Есть три уровня:
Я надеюсь, что это имеет смысл в контексте, в котором вы это видите.
Позвольте я приведу вам пример "Webby".
Представьте себе страницу с изображениями, которые наведены на них, например, для пунктов меню или навигации. Есть три способа загрузки изображений на этой странице:
Имеет смысл?
Это противоположность отложенной загрузки , при которой инициализация объекта откладывается до тех пор, пока объект не понадобится. Активная загрузка инициализирует объект при создании.
Если вы представите, что у вас есть объект, называемый человеком, у которого есть имя, дата рождения и количество менее важных деталей, скажем, любимый цвет, любимая телепрограмма.
Для ленивой загрузки этого класс, который вы бы инициализировали, читая, возможно, из базы данных все основные наиболее часто используемые детали (например, имя и дату рождения) и читайте только менее используемые детали, когда / если они необходимы, активная загрузка противоположна, то есть вы загружаете во всех деталях одновременно.
Преимущества отложенной загрузки часто называют эффективностью, однако, если объекты не такие сложные или эффективность не вызывает беспокойства, можно использовать ускоренную загрузку