Atrapar y lanzar excepciones en Ruby

Una excepción es un objeto de la clase Exception o un hijo de esa clase. Las excepciones ocurren cuando el programa alcanza un estado en su ejecución que no está definido. Ahora el programa no sabe qué hacer, por lo que genera una excepción. Esto se puede hacer automáticamente por Ruby o manualmente. Catch and Throw son palabras clave similares para aumentar y rescatar , las excepciones también se pueden manejar usando palabras clave de captura y lanzamiento en Ruby. La palabra clave Throw genera una excepción y cada vez que se cumple, el control del programa pasa a la instrucción catch.

Sintaxis:

catch :lable_name do
# matching catch will be executed when the throw block encounter

throw :lable_name condition
# this block will not be executed

end

El bloque catch se usa para saltar del bloque anidado y el bloque se etiqueta con un nombre. Este bloque funciona normalmente hasta que se encuentra con el bloque de lanzamiento, por lo que se usa atrapar y lanzar en lugar de levantar o rescatar.

Ejemplo 1:

# Ruby Program of Catch and Throw Exception
gfg = catch(:divide) do
  # a code block of catch similar to begin
    number = rand(2)
    throw :divide if number == 0
    number # set gfg = number if
    # no exception is thrown
end
puts gfg

Producción :

En el ejemplo anterior, si el número es 0, se lanza la excepción: dividir, que no devuelve nada a la instrucción catch, lo que resulta en «»establecido en gfg. si el número es 1, entonces no se lanza la excepción y la variable gfg se establece en 1.

Ejemplo #2: lanzamiento con valor predeterminado.

En el ejemplo anterior, cuando se lanzó la excepción, el valor de la variable gfg se estableció en «». podemos cambiar eso pasando el argumento predeterminado a la palabra clave throw.

# Ruby Program of Catch and Throw Exception
gfg = catch(:divide) do
  # a code block of catch similar to begin
    number = rand(2)
    throw :divide, 10 if number == 0
    number # set gfg = number if
    # no exception is thrown
end
puts gfg

Producción :

10

En el ejemplo anterior, si el número es 0, obtenemos 10. Si el número es 1, obtenemos 1.
 
Ejemplo 3: ejemplo de construcción anidada, aquí veremos cómo podemos saltar de construcciones anidadas.

# Ruby Program of Catch and Throw Exception
gfg = catch(:divide) do
  # a code block of catch similar to begin
    100.times do
      100.times do
        100.times do
          number = rand(10000)
          # comes out of all of the loops 
          # and goes to catch statement
          throw :divide, 10 if number == 0
        end
      end
    end
    number # set gfg = number if
    # no exception is thrown
end
puts gfg

Producción :

10

si el número es 0 incluso una vez en los bucles, obtenemos 10; de lo contrario, obtenemos el número.

Publicación traducida automáticamente

Artículo escrito por thvardhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *