Junior — Middle
V čom sa líši použitie rethrows v Kotlin od bežného throw a aké sú jeho výhody?
sobes.tech AI
Odpoveď od AI
V Kotlinu sa klúčové slovo rethrows používa v podpise funkcií vyššieho rádu, ktoré prijímajú lambda schopnú hádzať výnimky. To znamená, že funkcia sama ne hádže výnimky priamo, ale môže ich iba "prehodíť" (rethrow) z výnimiek, ktoré vzniknú vo vnútri predanej lambdy.
Rozdiely od bežného throw:
throwsa používa na okamžité hádzanie výnimky.rethrowssa aplikuje na funkcie, ktoré prijímajú blok kódu (lambda) a garantujú, že funkcia nevytvára nové výnimky, iba ich prenáša z vnútra lambdy.
Výhody rethrows:
- Umožňuje kompilátoru a volajúcemu kódu vedieť, že výnimky môžu pochádzať iba z predanej lambdy.
- Zlepšuje bezpečnosť typov a spracovanie výnimiek, pretože funkcia sama nemôže hádzať výnimky.
- Zjednodušuje spracovanie chýb pri práci s funkciami vyššieho rádu.
Príklad:
fun <T> runOperation(operation: () throws Exception): T rethrows {
return operation()
}
// Tu runOperation ne hádže výnimky sám, iba ich prenáša z operation
Takto rethrows pomáha jasne uviesť, že funkcia nevytvára výnimky, iba ich prenáša z predaného bloku.