Curso de Raku / Objetos, entrada/salida y excepciones / Excepciones
Excepciones propias
Además de las excepciones incorporadas X::, puedes
definir las tuyas. Una excepción personalizada es una clase que hereda
de la clase incorporada Exception y aporta un método
message:
class TooBig is Exception {
has $.value;
method message {
"Value $.value is too big";
}
}TooBig es una clase normal — puede tener atributos como
value —, pero como es is Exception, se puede
lanzar. La lanzas creando un objeto y llamándole
.throw:
my $value = 20 * 30;
TooBig.new(value => $value).throw if $value > 50;
CATCH {
when TooBig {
say .message;
}
}El programa imprime:
Value 600 is too bigDentro del CATCH, when TooBig coincide
porque el objeto lanzado es de ese tipo. Una excepción personalizada
lleva consigo los datos que le des (aquí, el value), de
modo que el manejador puede construir un mensaje preciso o reaccionar de
una forma concreta, mucho más útil que una simple cadena pasada a
die.
Esto reúne todo lo de esta parte: una excepción personalizada es una clase (con atributos y un método) que participa en la maquinaria de las excepciones, lista para señalar exactamente qué salió mal.
Práctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Ejercicios
Esta sección contiene 3 ejercicios. Mira todos los temas de esta sección antes de empezar los ejercicios.
Navegación del curso
← Quiz — fail |
Demasiado
grande →