Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Laravel / Manejo de excepciones: Uso de Throw Exception en Laravel 11

Manejo de excepciones: Uso de Throw Exception en Laravel 11

Por jc mouse jueves, agosto 8, 2024

El manejo correcto de excepciones permite que nuestras aplicaciones sean robustas, tolerante a fallos y amigable con el usuario final, de ahí la gran importancia en un correcto manejo de excepciones. Al trabajar con laravel, este framework nos brinda dos maneras de lidiar con estos contratiempos, una de ellas es el uso de la sentencia «THROW», la sentencia throw es un mecanismo de propósito general para generar excepciones en PHP. su propósito principal es señalar condiciones excepcionales dentro de la lógica de la aplicación.

A continuación implementemos la sentencia throw en un caso practico bajo un proyecto Laravel 11

Paso 1. UserService

Implementamos una clase Service donde se declara el metodo «findUserById» , el mismo realiza la busqueda de un usuario dado su ID, si no lo encuentra, retornara una excepción con el mensaje «Usuario no existe!», caso contrario, retorna al usuario encontrado.

<?php

namespace App\Services;

use Exception;
use App\Models\User;

class UserService 
{    
    public function findUserById( $id ){         
        $user = User::find( $id );
        if (!$user) {
            throw new Exception("Usuario no existe!");
        }
        return $user;
    }

}

Paso 2. FooController

En nuestra clase FooController, se inyecta el servicio UserService desde el constructor. Luego cuando se llama al método show(), se utiliza el método findUserById() del UserService. Si el usuario no existe, se captura la excepción y se responde con una pagina de error 404. Claro que si nuestra aplicación fuera un API, se responderia con un JSON, esto demuestra como capturamos la excepción, la personalizamos y actuamos segun lo que se requiera.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Services\UserService;

class FooController extends Controller
{    
    protected $userService;    
    
    public function __construct(UserService $userService) {        
        $this->userService = $userService;
    }

    public function show( $id ){
        try {
            $user = $this->userService->findUserById($id);
            return view('user.profile', ['user' => $user]);
        } catch (\Exception $e) {
            return response()->view('errors.user-not-found', ['message' => $e->getMessage()], 404);
        } 
    }

}

Paso 3. View

Tanto si encontramos usuario como si no, se implementa dos vistas.

view/user/profile.blade.php

{{ $user }}

view/errors/user-not-found.blade.php

{{ $message }}

Paso 4. Route

Route::get('/users/{id}', [FooController::class, 'show']);

Y probando tenemos:

Pero si tenemos una excepción obtenemos:

Tags

Artículos similares

Distribución de escaños con el método D’Hondt caso práctico (Bolivia)

El sistema D’Hondt creado por el jurista belga Victor d’Hondt en 1878, es un método de promedio mayor para a[...]

Botón en java de Windows 8 Modern UI

En este tutorial crearemos un botón con el estilo del nuevo windows 8 Modern UI que primero se conoció como Metro UI.  E[...]

Estilos condicionales en iReport

iReport nos da la posibilidad de dar un formato condicional a los diferentes registros resultado de nuestras consultas S[...]

Introducción a VueJS framework para el desarrollo FrontEnd

Vue.js es un framework progresivo para la creación de interfaces de usuario de una sola página creado por Evan You. Pero[...]

Ordenación de burbuja animado

La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Este algoritmo es esencialmen[...]

Introducción a Scene Builder y MVC (Parte II)

Segunda parte del tutorial [Introducción a Scene Builder y MVC (Parte I)]. En esta segunda parte, completaremos el diseñ[...]