Mis vahe on Kotlin ja Java eranditel?
sobes.tech AI
Vastus AI-lt
Peamine erinevus kontrollitavate (checked) erandite töötlemisel:
Java-s on kaks tüüpi erandeid:
- Kontrollitavad (Checked Exception): nõuavad selget töötlemist
try-catchplokis või meetodi signatuuristhrowssõnaga. Näited:IOException,FileNotFoundException. - Kontrollimata (Unchecked Exception): ei nõua selget töötlemist. Näited:
RuntimeExceptionja selle alamklassid,Error.
Kotlin-is ei ole kontrollitavaid erandeid. Kõik erandid on põhimõtteliselt kontrollimata. See lihtsustab koodi, kuna ei ole vaja kasutada try-catch või throws igal pool, kus võib erand tekkida:
Java näide:
// Java
public class FileRead {
public void readFile() throws IOException { // Nõutav deklareerimine
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}
}
Kotlin näide:
// Kotlin
import java.io.File
fun readFile() { // Ei ole vaja deklareerida throws
File("file.txt").forEachLine {
println(it)
}
}
Hoolimata kontrollitavate erandite puudumisest, võib Kotlin neid endiselt visata ja töödelda (nagu Java teekidest visatud erandeid), kasutades try-catch-finally plokke. Seda tehakse olemasoleva Java-koodi ühilduvuse tagamiseks:
// Kotlin
import java.io.IOException
fun readFileSafe() {
try {
readFile() // Funktsioon, mis võib visata IOException
} catch (e: IOException) {
println("Error reading file: ${e.message}")
} finally {
println("File operation finished.")
}
}
Kokkuvõte: Kotlin lihtsustab arendust, eemaldades vajaduse töötleda kontrollitavaid erandeid, rohkem tuginedes jooksuaegsetele eranditele ja standardsetele vigade töötlejatele, kui see on vajalik.