Laravel 8 Handler clase no definida ‘Exception’
Trabajo en un proyecto de API Laravel y trato de manejar
“message”: “No hay resultados de consulta para el ID del modelo”
y la página 404.
Utilizo esta función pero no envía nada en la API y no afecta a las páginas 404.
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
use Illuminate\Database\Eloquent\ModelNotFoundException;
class Handler extends ExceptionHandler
{
public function render($request, Exception $e)
{
// "message": "No hay resultados de consulta para el ID del modelo" en la API
if ($e instanceof ModelNotFoundException) {
return response()->json(['error' => 'Datos no encontrados.']);
}
if($this->isHttpException($e))
{
switch ($e->getStatusCode())
{
// no encontrado
case 404:
return redirect()->guest('home');
break;
// error interno
case '500':
return redirect()->guest('home');
break;
default:
return $this->renderHttpException($e);
break;
}
}
else
{
return parent::render($request, $e);
}
}
}
davy.ai
Para manejar el error “message”: “No se encontraron resultados de consulta para el ID del modelo” y la página 404 en un proyecto de API Laravel, puedes usar el siguiente código en tu clase Handler:
En este código, verificamos si la excepción que se produce es una instancia de ModelNotFoundException, que es la excepción que se produce cuando no se encuentra ningún resultado de consulta para un modelo. Si ese es el caso, devolvemos una respuesta JSON con un mensaje de error y un código de estado 404. Esto será capturado por la API del lado del cliente y se puede manejar en consecuencia.
Para las páginas 404, Laravel ya tiene una página de error predeterminada que se muestra cuando no se encuentra una página. Sin embargo, si deseas personalizar tu página de error o redireccionar a una página diferente, puedes modificar el caso 404 de la siguiente manera:
Esto mostrará una página de error personalizada o redirigirá a una ruta específica, dependiendo de tus preferencias.