Вы должны использовать исключения для исключительных, т. Е. Неожиданных или необычных условий.В зависимости от контекста проверки отсутствие разрешений может быть либо исключительным, либо нет.Если, например, ваш код просто делает одно для авторизованных пользователей, а другое - для неавторизованных, или чаще просто предоставляет дополнительный доступ авторизованным пользователям (скажем, как показывает меню администратора для администраторов), тогда вам не следует использовать исключения дляэтот.Если, с другой стороны, неавторизованный пользователь пытается получить доступ к веб-действию, которое требует авторизации, или не администратор пытается получить доступ только к действию администратора, тогда исключение вполне может быть подходящим ответом.В этом случае вы должны поймать исключение и сделать соответствующую вещь, скажем, перенаправить на вход в систему или действие по ошибке.
В качестве обобщения я бы сказал, что код, который определяет, имеет ли пользователь конкретное разрешение,не выбрасывайте исключение, а скорее верните true или false.Код, вызывающий этот вызов, может, в зависимости от контекста, выбрать исключение, если разрешение требуется и ожидается.