Middle
Papaskokite apie išimčių mechanizmą Java kalboje.
sobes.tech AI
Atsakymas iš AI
Java mechanizmas išimtys naudojamas klaidų ir kitų išimtinių situacijų apdorojimui, kurios atsiranda vykdant programą.
Pagrindiniai išimčių mechanizmo elementai:
- Išimtis (Exception): Objektas, kuris atstovauja įvykį, pažeidžiantį programos įprastą eigą.
try,catch,finallyblokai: Naudojami išimčių apdorojimui.try: Kodo blokas, kuriame gali įvykti išimtis.catch: Kodo blokas, kuris vykdomas, jeitrybloke įvyksta tam tikro tipo išimtis.finally: Kodo blokas, kuris visada vykdomas, nepriklausomai nuo to, ar įvyko išimtis ar ne. Naudojamas išteklių išlaisvinimui.
throwraktažodis: Naudojamas aiškiam išimties sukūrimui ir metimui.throwsraktažodis: Naudojamas metodo paraše, norint nurodyti išimčių tipus, kurias metodas gali mesti.
Java išimčių hierarchija:
Throwable: Visų išimčių ir klaidų bazinė klasė.Error: Reprezentuoja rimtas problemas, nuo kurių programa dažnai negali atsitiesti (pvz.,OutOfMemoryError).Exception: Reprezentuoja išimtis, kurias programa gali pagauti ir apdoroti.RuntimeException(Unchecked Exceptions): Išimtys, kurioms nereikia aiškios apdorojimo ar deklaravimo metodo paraše (pvz.,NullPointerException,ArrayIndexOutOfBoundsException).- Tikrintos išimtys (
Checked Exceptions): Išimtys, kurias reikia arba apdoroti naudojanttry-catchbloką, arba deklaruoti naudojantthrowsmetodo paraše (pvz.,IOException,FileNotFoundException).
Pavyzdys išimties apdorojimo:
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("Rezultatas: " + result);
} catch (ArithmeticException e) {
// Apdorojimas ArithmeticException
System.err.println("Klaida: dalyba iš nulio nėra leidžiama.");
System.err.println("Išimties detalės: " + e.getMessage());
e.printStackTrace(); // iškvietimo steko išvedimas
} finally {
// Šis blokas visada vykdomas
System.out.println("Finally blokas įvykdytas.");
}
}
public static int divide(int a, int b) {
// Gali išmesti ArithmeticException, jei b = 0
return a / b;
}
}
throws naudojimo pavyzdys:
import java.io.FileReader;
import java.io.IOException;
public class ThrowsExample {
public static void readFile(String filename) throws IOException {
// Gali išmesti IOException
FileReader reader = new FileReader(filename);
// Darbas su failu
}
public static void main(String[] args) {
try {
readFile("neegzistuojantis_failas.txt");
} catch (IOException e) {
System.err.println("Klaida skaitant failą: " + e.getMessage());
}
}
}