[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Exceptions в Symfony3
acerrusm
Привет.

Собственно вот какое дело:

Разобрался с перехватом стандартных в Symfony3 исключениями, типо 404, 403, 500,... и тд.

Например если страница не найдена, то выкидываю такое исключение:
throw $this->createNotFoundException('Page not found');


Однако, я не могу понять как нужно правильно создавать кастомные исключения, что бы было что то вроде:

throw $this->myCustomException('Wrong password');


Угробил весь день, но так и не понял. Создавал Event Listener, но там все равно не то.

Я конечно могу создать топорным способом, но чувствую, что в Symfony это можно сделать как то по другому.

Так как же все таки создавать кастомные исключения в Symfony3?
Invis1ble
причем тут Symfony? исключения - механизм языка, а не фреймворка

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

acerrusm
Цитата (Invis1ble @ 3.12.2015 - 18:35)
причем тут Symfony? исключения - механизм языка, а не фреймворка

При том, что в Symfony они хз как прописаны. Там же есть какие то рекомендации как, где и что нужно писать. Например в папке config все конфигурационные файлы и тд.

Можно конечно захреначить в папке src директорию Exceptions и свалить туда все кастомные исключения. Только вот потом сядет другой человек и будет рвать на себе волосы.

Вопрос не в том как работают исключения, а как их прописывать в соответствии с фреймворком.
Invis1ble
Цитата (acerrusm @ 3.12.2015 - 21:52)
При том, что в Symfony они хз как прописаны.

нормально они там "прописаны"

Цитата (acerrusm @ 3.12.2015 - 21:52)
Там же есть какие то рекомендации как, где и что нужно писать.
acerrusm
Цитата (Invis1ble @ 3.12.2015 - 20:08)


Цитата (acerrusm @ 3.12.2015 - 21:52)
Там же есть какие то рекомендации как, где и что нужно писать.

отлично, вот и почитай их

Я так понимаю тебе по делу сказать нечего, тогда проходи мимо
Guest
Что-бы вот так можно было делать
throw $this->myCustomException('Wrong password');

нужно создать базовый контроллер, унаследованный от Symfony\Bundle\FrameworkBundle\Controller\Controller и запрограммировать в нем метод myCustomException(). И потом все контроллеры наследовать от этого нового базового контроллера.

Обычно вместо этого исключения кидают так:
throw new MyCustomException('Wrong password');

Складывают классы исключений обычно в папку %BundleName%\Exception (внезапно!).
acerrusm
Цитата (Guest @ 3.12.2015 - 21:38)
Что-бы вот так можно было делать
throw $this->myCustomException('Wrong password');

нужно создать базовый контроллер, унаследованный от Symfony\Bundle\FrameworkBundle\Controller\Controller и запрограммировать в нем метод myCustomException(). И потом все контроллеры наследовать от этого нового базового контроллера.

Обычно вместо этого исключения кидают так:
throw new MyCustomException('Wrong password');

Складывают классы исключений обычно в папку %BundleName%\Exception (внезапно!).

Спасибо! Только я класс MyCustomException унаследовал от \Exception:

namespace AppBundle\Exception;

class MyCustomException extends \Exception
{

}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.