Виклик Mage::throwException
використовується для викидання винятків із певної Mage_Core_Exception
різноманітності. Зазвичай вони використовуються для подання повідомлень про помилки кінцевому користувачеві. Для прикладів цього: зробіть швидкий пошук Mage::throwException
у модулі Mage_Checkout, ви знайдете безліч випадків, коли повідомлення про помилку насправді переводиться перед тим, як його викинути, оскільки воно в кінцевому підсумку буде додане до об’єкта сеансу та відображене користувачеві на отримана сторінка.
Використання new Exception
або щось подібне new My_Custom_Exception
зазвичай відбувається там, де ви накидаєте внутрішні помилки програми, помилки, які, швидше за все, ніколи не повинні відображатися кінцевому користувачеві. Можливо, ви їх ловите та обробляєте витончено (корисно використовувати для певного типу винятків у деяких випадках), або в інший раз, коли вони закінчуються спійманим, зареєстрованим та завершеним запитом, із загальним повідомленням про помилку, що відображається користувачеві.
Я ніколи особисто не використовував, Mage::exception
але, мабуть, це спроба створити унікальний тип виключення для кожного модуля. Не було б шкоди для його використання, оскільки це, по суті, фабрика, яка повертає екземпляр виключення для даного модуля, хоча (на момент написання цього запису) він не реалізує жодної підтримки для таких речей, як скасування.