2016-04-21 13 views
17
try { 

} catch (ex: MyException1, MyException2) { 
    logger.warn("", ex) 
} 

oCome catturare molte eccezioni, allo stesso tempo in Kotlin

try { 

} catch (ex: MyException1 | MyException2) { 
    logger.warn("", ex) 
} 

Di conseguenza, un errore di compilazione: Unresolved reference: MyException2.

Come posso rilevare molte eccezioni contemporaneamente su Kotlin?

+0

Potrebbe essere una bella caratteristica di avere in Kotlin. – Michael

risposta

28

In base a questo thread questa funzione non è supportata in questo momento.

abreslav - JetBrains Team

Not at the moment, but it is on the table

È possibile simulare il più fermo però:

try { 
    // do some work 
} catch (ex: Exception) { 
    when(ex) { 
     is IllegalAccessException, is IndexOutOfBoundsException -> { 
      // handle those above 
     } 
     else -> throw ex 
    } 
} 
+0

Sto copiando la risposta 'pdvrieze' qui: ' Questo funziona sicuramente, ma è leggermente meno efficiente in quanto l'eccezione rilevata è esplicita su jvm (quindi un'eccezione non elaborata non verrà catturata e riconvertita quale sarebbe il corollario della tua soluzione) ' – Solidak

+0

questo non è lo stesso. catturerà tutte le eccezioni, mentre si desidera solo catturare determinati tipi di eccezioni con il multi-catch. – IARI

+1

@IARI La clausola 'else' rilancia l'eccezione _unwanted_. – miensol

Problemi correlati