Manejo elegante de errores con la función rescue de Laravel
- Publicado el 09 enero, 2025
- Palabras: 68
El manejo de excepciones no debería interrumpir el flujo de tu aplicación. La función rescue de Laravel ofrece una forma limpia de ejecutar código potencialmente peligroso y al mismo tiempo, mantener un funcionamiento fluido.

#Uso básico
La función rescue() ejecuta el clousure dado y captura cualquier excepción que se produzca durante su ejecución. Todas las excepciones que se capturen se enviarán a su controlador de excepciones; sin embargo, la solicitud continuará procesándose:
// Simple usage
return rescue(function () {
return $this->method();
});
// With default value
return rescue(function () {
return $this->method();
}, false);
// With fallback closure
return rescue(function () {
return $this->method();
}, function () {
return $this->failure();
});
#Ejemplo práctico
A continuación se muestra una implementación práctica para una integración de API:
class ExternalServiceIntegration
{
public function fetchUserData($userId)
{
return rescue(function () use ($userId) {
$response = Http::get("api.example.com/users/{$userId}");
return $response->json();
}, [
'id' => $userId,
'status' => 'unavailable',
'error' => 'Could not fetch user data'
]);
}
public function syncProducts()
{
return rescue(
function () {
$products = $this->api->getProducts();
foreach ($products as $product) {
$this->updateLocalProduct($product);
}
return true;
},
function () {
Cache::put('sync_failed', true, now()->addHour());
return false;
},
report: function (Throwable $e) {
return !($e instanceof TemporaryException);
}
);
}
}
// Usage in controller
class ProductController extends Controller
{
public function index(ExternalServiceIntegration $service)
{
$synced = $service->syncProducts();
return response()->json([
'success' => $synced,
'message' => $synced
? 'Products synchronized successfully'
: 'Sync failed, using cached data'
]);
}
}
La función rescue proporciona una forma limpia de manejar errores potenciales mientras mantiene una estructura de código legible.
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión