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:
En este tutorial crearemos una aplicación android que nos permitirá abrir un PopupMenu de donde podremos seleccionar una[...]
En la pagina de Taringa, existe una sección donde se puede ver lo que pasa en ese foro al momento, «Taringa! en vivo» se[...]
SDKMAN! es una herramienta para la administración de versiones paralelas de varios programas de desarrollo de software c[...]
¿Quieres iniciarte en la programación? ¿Eres un programador impaciente que odia instalar cualquier software en su comput[...]
Necesitamos: Android Studio 2 tipos de fuente TTF Agregar Archivo de fuente al proyecto Paso 1: Crear carpeta assets Cli[...]
Un TextView autocompletado nos facilita el ingreso de información en aplicaciones móviles ya que te muestra posibles opc[...]