Многие разработчики сталкиваются с исключениями в процессе разработки, и процесс во многом один и тот же: захват, а затем обработка, и на самом деле это так. Но в этой статье не предполагается слишком много говорить о принципах ошибок и аномалий, а только из laravel Автономный Исключение Начните с того, как лучше справляться с сообщениями об ошибках.
ненормальный
Давайте начнем с простого примера. ларавель Если одна Модель Если вы не можете найти или не делаете этого, легко создать исключение. Упс, что-то пошло не так И так далее. Это просто в APP_DEBUG=false В этом случае это не дает пользователям больше полезной информации.
User::findOrFail(1);
findOrFail Метод Модель Если нет, он покажет: Извините, страница, которую вы ищете, не найдена. 。 Это один из 404 Страницы с ошибками всегда должны возвращаться таким образом, если мы хотим узнать больше полезной информации?
попробуй…поймай
Мне также нравится использовать его в своей работе. попробуйте поймать Чтобы справиться с исключениями, которые могут возникнуть, также рекомендуется это сделать. Преимущество состоит в том, чтобы вовремя улавливать непредсказуемые ошибки и предоставлять пользователям лучший опыт. Обычный демонстрационный Следующим образом
try {
$user = User::findOrFail(1);
} catch (ModelNotFoundException $exception) {
return back()->withError($exception->getMessage())->withInput();
}Мы можем сделать то же самое:
if (! User::find(1)) {
throw new UserNotFoundException('...', 404);
}Пользовательское исключение
Laravel Фреймворк позволяет нам настраивать исключение Выполнение заказов
php artisan make:exception UserNotFoundException
Система автоматически попадет в Исключения Создайте каталог Исключение UserNotFoundException Класс, этот класс наследует Исключение Это дает нам возможность играть свободно.
namespace App\Exceptions;
use Exception;
class UserNotFoundException extends Exception
{
public function render($request, $e)
{
if ($request->expectsJson()) {
// If it's an Ajax request...
}
return redirect()->to('...');
}
}Ненормальность суждения
пребывание Исключения Среднее Handle.php В документе мы видим один. Метод render () , вот где мы оцениваем пользовательские исключения
// Handle.php
if ($exception instanceof UserNotFoundException) {
return $exception->render($exception, $request);
}Как вы можете видеть, нам просто нужно определить, является ли вызванное исключение UserNotFoundException Примеров достаточно. Находясь в классе UserNotFoundException , мы также можем настроить формат возвращаемых данных и код состояния и так далее. В своей работе я лично предпочитаю создавать некоторые пользовательские классы исключений, которые также будут хорошо управляться.