2016-04-21 5 views
17
try { 

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

oderWie viele Ausnahmen zur gleichen Zeit in Kotlin

try { 

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

Als Ergebnis wird ein Übersetzungsfehler fangen: Unresolved reference: MyException2.

Wie kann ich viele Ausnahmen gleichzeitig auf Kotlin fangen?

+0

Es könnte ein nettes Feature sein in Kotlin zu haben. – Michael

Antwort

28

Entsprechend dieser thread wird diese Funktion derzeit nicht unterstützt.

abreslav - JetBrains Team

Not at the moment, but it is on the table

Sie können die Multi-catch imitieren aber:

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

Ich kopiere 'pdvrieze' Antwort hier: ' Dies funktioniert sicherlich, aber ist etwas weniger effizient, da die gefangene Ausnahme explizit für die jvm ist (so eine nicht verarbeitete Ausnahme wird nicht gefangen und wieder aufgetaut werden, die die Korollar sein würde von Ihrer Lösung) ' – Solidak

+0

das ist einfach nicht das Gleiche. Es fängt alle Ausnahmen ab, während Sie nur bestimmte Arten von Ausnahmen mit Mehrfachfang fangen wollen. – IARI

+1

@IARI Die 'else'-Klausel wiederholt die _unwanted_Ausnahme. – miensol

Verwandte Themen