2016-04-21 27 views
17
try { 

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

lubJak złapać wiele wyjątków w tym samym czasie w Kotlin

try { 

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

W wyniku błędu kompilacji: Unresolved reference: MyException2.

Jak mogę złapać wiele wyjątków w tym samym czasie na Kotlin?

+0

To może być fajnym dodatkiem mieć w Kotlin. – Michael

Odpowiedz

28

Zgodnie z tym thread ta funkcja nie jest obecnie obsługiwana.

abreslav - JetBrains Team

Not at the moment, but it is on the table

można naśladować multi-catch jednak:

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

Skopiuję odpowiedź 'pdvrieze' tutaj: ' To z pewnością działa, ale jest nieco mniej wydajne, ponieważ wychwycony wyjątek jest jawny dla jvm (więc nieprzetworzony wyjątek nie zostanie przechwycony i ponownie zgłoszony, co byłoby następstwem twojego rozwiązania) ' – Solidak

+0

to po prostu nie to samo. będzie wychwytywał wszystkie wyjątki, a Ty chcesz tylko wychwycić pewne typy wyjątków przy użyciu wielu połowów. – IARI

+1

@IARI Klauzula "else" ponownie rzuca wyjątek _unwanted_. – miensol

Powiązane problemy