Escala | Finalmente excepciones

El bloque Scala finalmente se usa para ejecutar código importante, como cerrar la conexión, transmitir o liberar recursos (puede ser un archivo, conexión de red, conexión de base de datos, etc.). Siempre se ejecutará sin importar si se lanza una excepción o no. El bloque «finally» se ejecutará después de los bloques » try » y «catch «, pero antes de que el control vuelva a su origen.
Sintaxis:

try {
       //your scala code here    
    } 
finally {
           println("this block of code is always executed")
           // your scala code here, such as to close a database connection
        }
Flujo de control en try-finally

En este caso, no importa si ocurre una excepción en el bloque try o no, finalmente siempre se ejecutará. Pero el flujo de control dependerá de si se ha producido una excepción en el bloque de prueba o no.

  1. Excepción generada: el flujo de control se bloqueará finalmente seguido del mecanismo de manejo de excepciones predeterminado si se ha producido una excepción en el bloque de prueba.
    Ejemplo:

    // Scala program to demonstrate 
    // control flow of try-finally clause 
    // when exception occur in try block 
      
    // Creating object
    object GFG 
        // Main method 
        def main(args: Array[String]) 
        
            var arr = new Array[Int](4
              
            try
            
                var i = arr(4
                  
                // this statement will never execute 
                // as exception is raised by above statement 
                println("Inside try block"
            
              
            finally
            
                println("finally block executed"
            
              
            // rest program will not execute 
            println("Outside try-finally clause"
          
        
    }

    Producción:

    finally block executed
  2. Excepción no planteada: el flujo de control se bloqueará finalmente seguido del resto del programa si no se produce una excepción en el bloque de prueba.
    Ejemplo:

    // Scala program to demonstrate  
    // control flow of try-finally clause 
    // when exception doesn't occur in try block 
      
    // Creating object
    object GFG 
        // Main method 
        def main(args: Array[String])  
        
               
          try
            
                val str1 = "123".toInt 
                  
                // this statement will execute 
                // as no any exception is raised 
               // by above statement 
                println("Inside try block"
            
                
            finally
            
                println("finally block executed"
            
                
            // rest program will be executed 
            println("Outside try-finally clause"
        
            
      
    }

    Producción:

    Inside try block
    finally block executed
    Outside try-finally clause
cláusula try-catch-finally

La palabra clave finalmente se usa en asociación con un bloque try/catch y garantiza que se ejecutará una sección de código, incluso si se lanza una excepción.
Ejemplo :

// Scala program of try-catch-finally clause 
  
// Creating object
object GFG
{ 
    // Main method
    def main(args:Array[String])
    { 
        try
        { 
            // create array
            var array = Array(4, 2, 7) 
            var b = array(5) 
        }
        catch
        { 
            // Catch block contain cases.
            case e: ArithmeticException => println(e) 
            case ex: Exception => println(ex) 
            case th: Throwable=> println("unknown exception"+th) 
        } 
        finally
        { 
            // Finally block will execute
            println("this block always executes") 
        } 
          
        // rest program will execute 
        println(" rest of code executing") 
    } 
} 

Producción

java.lang.ArrayIndexOutOfBoundsException: 5
this block always executes
Rest of code executing

En el ejemplo anterior, creamos una array en el bloque de prueba y desde esa array asignamos el valor a la variable b, pero arroja una excepción porque el índice de la array que estamos usando para asignar el valor a la variable b, es decir, está fuera del rango de los índices de la array. catch block captura esa excepción e imprime el mensaje y finalmente el bloque siempre se ejecuta sin importar qué.

Publicación traducida automáticamente

Artículo escrito por PREMMAURYA 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 *