Manejo de Errores
🧯 Manejo de Errores
Sección titulada «🧯 Manejo de Errores»Este ejemplo muestra cómo capturar errores de forma centralizada en Zuno usando un middleware de manejo de errores. Esto te permite:
- Evitar duplicación de lógica de errores
- Responder con mensajes consistentes
- Registrar errores para depuración
🧱 Estructura del Proyecto
Sección titulada «🧱 Estructura del Proyecto»error-handling-example/├── CMakeLists.txt└── main.cpp
📄 CMakeLists.txt
Sección titulada «📄 CMakeLists.txt»cmake_minimum_required(VERSION 3.20)project(error_handling_example)
set(CMAKE_CXX_STANDARD 20)set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(zunoGIT_REPOSITORY https://github.com/ZunoFramework/zuno.gitGIT_TAG main)
FetchContent_MakeAvailable(zuno)
add_executable(error-handling-example main.cpp)target_link_libraries(error-handling-example PRIVATE zuno)
📄 main.cpp
Sección titulada «📄 main.cpp»#include <zuno/zuno.hpp>#include <stdexcept>
int main() {zuno::App app;
// Middleware de manejo de erroresapp.use([](auto& req, auto& res, zuno::Next next) { try { next(); } catch (const std::exception& ex) { res.status(500).json({ { "error", "Error interno del servidor" }, { "detalle", ex.what() } }); }});
// Ruta que lanza una excepciónapp.get("/crash", [](Request& req, Response& res) { throw std::runtime_error("Algo salió mal");});
app.listen(3000);}
🧪 Probar el Comportamiento
Sección titulada «🧪 Probar el Comportamiento»curl http://localhost:3000/crash
Deberías recibir una respuesta JSON como:
{"error": "Error interno del servidor","detalle": "Algo salió mal"}
🧭 Próximos Pasos
Sección titulada «🧭 Próximos Pasos»- Agrega logging estructurado para registrar errores
- Usa respuestas personalizadas según el entorno
- Combina con autenticación para manejar errores de autorización
Zuno te permite capturar errores de forma elegante—para que tus APIs sean más robustas y predecibles.