Вопрос заключается в том, чтобы не позволить приложению генерировать исключение и не останавливать приложение в некритических элементах (расходуемых, например, в журнале поиска пользователей, сохраненном в БД), лучше использовать этот код:
try {
/* some code here that will throw an exception at any error/miss-configuration because it is the
way this module works */
$user = Sentry::getUser();
} catch (Exception $e) {}
или же:
@$user = Sentry::getUser();
Это просто теоретический код, но на самом деле Sentry — хороший пример того, что я имею в виду. В этом случае, если пользователь не вошел в систему, Sentry выдаст исключение.
Как я уже сказал, речь идет о коде, который не критичен для приложения, и я не собираюсь злоупотреблять им.
Очевидно, что лучше подходить к написанию кода, чтобы вообще предотвратить такую ситуацию.
Иногда, однако, это необходимо для системы stfu 🙂
Если код выдает исключение, единственный способ обработать это с try
/catch
блок.
@code
только подавляет сообщения об ошибках; фатальные ошибки и исключения все равно прекратят выполнение кода.
Кроме того, если у вас есть много исключений, вы можете попробовать установка собственного обработчика исключений, но я не могу сказать, что это хорошая идея.
Других решений пока нет …