2017-08-24 5 views
0

J'ai un problème avec mon code scala ci-dessous:scala Gestion des erreurs dans une fonction

class ClassMyHelper { 

    protected var logger: Logger = LogManager.getLogger(classOf[AvroHelper]) 

    def somefunc(schema: Schema, datum: GenericRecord): Array[Byte] = { 
    <code> 
    var byteData: Array[Byte] = null 
    try { 
     <code> 
     byteData = os.toByteArray() 
     //byteData 
    } catch { 
     case e: IOException => 
     logger.error("IOException encountered!! ", e) 

     case e: Exception => 
     logger.error("Something went wrong!! ", e) 

    } finally try os.close() 
    catch { 
     case e: IOException => 
     logger.error("IOException encountered while closing output stream!! ", e) 

     case e: Exception => 
     logger.error("Something went wrong while closing output stream!! ", e) 

    } 
    byteData //Unreachable code 
    } 
} 

Le problème est que la dernière ligne de la fonction somefunc j'obtiens une erreur de code inaccessible. Pouvez-vous s'il vous plaît m'aider à identifier ce que je fais mal ici.

Répondre

1

Si vous ajoutez un finally {} après la 2e catch choses blocs semblent éclaircir. Je ne suis pas sûr pourquoi. Je n'utilise jamais try/catch/finally moi-même. Je préfère la classe Scala Try de la bibliothèque standard.

BTW, la prochaine fois que vous postez le code s'il vous plaît inclure le requis import s, et vérifiez pour vous assurer que votre code compile comme présenté.