Вызов Mage::throwException
используется для выдачи исключений определенного Mage_Core_Exception
сорта. Они обычно используются для представления сообщений об ошибках конечному пользователю. Для примеров этого, сделайте быстрый поиск Mage::throwException
в модуле Mage_Checkout, вы найдете много случаев, когда сообщение об ошибке фактически транслируется перед его выбросом, так как в конечном итоге оно будет добавлено к объекту сеанса и отображено пользователю на итоговая страница.
Использование new Exception
или что-то подобное, как new My_Custom_Exception
правило, происходит там, где вы генерируете внутренние ошибки приложения, ошибки, которые, скорее всего, никогда не должны отображаться конечному пользователю. Может быть, вы ловите их и обрабатываете их изящно (в некоторых случаях полезно для пользовательского типа исключения), или в других случаях они заканчиваются перехватом, записываются в журнал и завершают запрос с отображением пользователю более общего сообщения об ошибке.
Я никогда не использовал Mage::exception
его лично, но, похоже, это попытка создать уникальный тип исключения для каждого модуля. При его использовании не было бы никакого вреда, поскольку по сути это фабрика, которая возвращает экземпляр исключения для данного модуля, хотя (на момент написания этой статьи) она не реализовала никакой поддержки для таких вещей, как переопределения.