Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
index.html
Tab = 4 espacios
1
<!DOCTYPE html>
<html>
<body>

<h2>Control de Excepciones en PHP 8.3</h2>

<?php
class MatrimonioCuposException extends Exception {}

function inscribirEstudiante(string $nombre, int $edad, int $cuposDisponibles): string {
    // 1. Validación de edad mínima
    if ($edad < 16) {
        throw new InvalidArgumentException("El estudiante '{$nombre}' tiene {$edad} años. La edad mínima es de 16 años.");
    }

    // 2. Validación de disponibilidad de cupos
    if ($cuposDisponibles <= 0) {
        throw new MatrimonioCuposException("No hay cupos disponibles en este momento para la cohorte.");
    }

    return "✅ ¡Inscripción confirmada para <strong>{$nombre}</strong> en Kilopolis Academia!";
}

// Probamos diferentes escenarios
$candidatos = [
    ["nombre" => "Celia Cruz", "edad" => 22, "cupos" => 5],
    ["nombre" => "Pedro Pascal", "edad" => 14, "cupos" => 4],
    ["nombre" => "Selena Quintanilla", "edad" => 25, "cupos" => 0],
];

foreach ($candidatos as $candidato) {
    echo "<div style='border:1px solid #cbd5e1; border-radius:6px; padding:10px 14px; margin-bottom:10px; background:#f8fafc;'>";
    echo "<strong>Evaluando a: {$candidato['nombre']}...</strong><br>";

    try {
        $resultado = inscribirEstudiante(
            $candidato['nombre'], 
            $candidato['edad'], 
            $candidato['cupos']
        );
        echo "<span style='color:#059669;'>{$resultado}</span>";
    } catch (InvalidArgumentException $e) {
        echo "<span style='color:#dc2626;'>⚠️ Error de Validación: " . $e->getMessage() . "</span>";
    } catch (MatrimonioCuposException $e) {
        echo "<span style='color:#d97706;'>⏳ Lista de Espera: " . $e->getMessage() . "</span>";
    } catch (Throwable $e) {
        echo "<span style='color:#991b1b;'>❌ Error Imprevisto: " . $e->getMessage() . "</span>";
    } finally {
        echo "<br><small style='color:#64748b;'>[Operación auditada en el log del sistema]</small>";
    }

    echo "</div>";
}
?>

</body>
</html>
Haz clic para editar este código
Vista Previa
Servidor PHP 8.3