Middle
Rääkige Java erandite mehhanismist.
sobes.tech AI
Vastus AI-lt
Java mehhanism väljendite kasutamiseks vigade ja teiste erandlike olukordade töötlemiseks, mis tekivad programmi täitmise ajal.
Väljendite mehhanismi põhielemendid:
- Väljend (Exception): Objekt, mis esindab sündmust, mis rikub programmi normaalse käigu.
try,catch,finallyplokid: Kasutatakse väljendite töötlemiseks.try: Koodiplokk, kus võib tekkida väljend.catch: Koodiplokk, mis täidetakse, kuitryplokis tekib teatud tüüpi väljend.finally: Koodiplokk, mis täidetakse alati, olenemata sellest, kas väljend tekkis või mitte. Kasutatakse ressursside vabastamiseks.
throwmärksõna: Kasutatakse väljendite selgeks loomise ja viskamise jaoks.throwsmärksõna: Kasutatakse meetodi signatuuris, et teavitada väljendite tüüpidest, mida meetod võib visata.
Java väljendite hierarhia:
Throwable: Kõigi väljendite ja vigade alusklass.Error: Esindab tõsiseid probleeme, millest programm tavaliselt taastuda ei saa (ntOutOfMemoryError).Exception: Esindab väljendeid, mida programm saab püüda ja töödelda.RuntimeException(Unchecked Exceptions): Väljendid, mille jaoks ei ole vaja selget töötlemist või teavitust meetodi signatuuris (ntNullPointerException,ArrayIndexOutOfBoundsException).- Kontrollitud väljendid (
Checked Exceptions): Väljendid, mida tuleb kas töödeldatry-catchplokiga või teavitadathrows-iga meetodi signatuuris (ntIOException,FileNotFoundException).
Näide väljendi töötlemisest:
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("Tulemus: " + result);
} catch (ArithmeticException e) {
// ArithmeticException töötlemine
System.err.println("Viga: nulliga jagamine ei ole lubatud.");
System.err.println("Väljendi detailid: " + e.getMessage());
e.printStackTrace(); // Kutse virna väljastamine
} finally {
// See plokk täidetakse alati
System.out.println("Finally plokk täidetud.");
}
}
public static int divide(int a, int b) {
// Võib visata ArithmeticException, kui b = 0
return a / b;
}
}
Näide throws kasutamisest:
import java.io.FileReader;
import java.io.IOException;
public class ThrowsExample {
public static void readFile(String filename) throws IOException {
// Võib visata IOException
FileReader reader = new FileReader(filename);
// Edasine töö failiga
}
public static void main(String[] args) {
try {
readFile("mitteolemas_fail.txt");
} catch (IOException e) {
System.err.println("Viga faili lugemisel: " + e.getMessage());
}
}
}