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