Junior
Kādas ir galvenās Java izņēmumu klases?
sobes.tech AI
Atbilde no AI
Java hierarhija ar izņēmumiem sākas ar klasi Throwable. Tam ir divas galvenās apakklases: Error un Exception.
Error:
- Pārstāv nopietnas problēmas, kuras parasti nevajadzētu uztvert lietojumprogrammai.
- Radās virtuālās mašinas (JVM) vai vides kļūdu dēļ.
- Piemēri:
OutOfMemoryError,StackOverflowError.
Exception:
- Pārstāv apstākļus, kurus lietojumprogramma var un vajadzētu apstrādāt.
- Dalās divās kategorijās:
- Checked Exceptions (pārbaudāmas izņēmumi):
- Jāuztver vai nu ar
try-catchblokiem, vai arī jādeklarē metodes parakstā (throws). - Kompilators obligāti pārbauda to apstrādi.
- Parasti attiecas uz prognozētiem, bet nevēlamiem apstākļiem, kas var rasties izpildes laikā.
- Piemēri:
IOException,FileNotFoundException,SQLException.
- Jāuztver vai nu ar
- Unchecked Exceptions (nepārbaudāmas izņēmumi):
- Manto no
RuntimeException. - Nav nepieciešama obligāta apstrāde vai deklarācija metodes parakstā.
- Bieži norāda uz programmas loģikas kļūdām vai API nepareizu lietošanu.
- Piemēri:
NullPointerException,ArrayIndexOutOfBoundsException,IllegalArgumentException.
- Manto no
- Checked Exceptions (pārbaudāmas izņēmumi):
Galvenās izņēmumu klases:
java.lang.Throwable(pamatklase)java.lang.Error(neapstrādājamas kļūdas)java.lang.OutOfMemoryErrorjava.lang.StackOverflowError
java.lang.Exception(apstrādājamas izņēmumi)java.io.IOException(Checked)java.io.FileNotFoundException(Checked)
java.sql.SQLException(Checked)java.lang.RuntimeException(Unchecked)java.lang.NullPointerExceptionjava.lang.IllegalArgumentExceptionjava.lang.IndexOutOfBoundsException
Salīdzināšanas tabula:
| Īpašība | Checked Exception | Unchecked Exception (RuntimeException) |
Error |
|---|---|---|---|
| Mantošana | Exception (izņemot RuntimeException un tā pēcnācējus) |
RuntimeException |
Error |
| Obligāta apstrāde / deklarācija | Jā | Nē | Nē |
| Rašanās iemesls | Prognozējami kļūdas | Programmēšanas kļūdas, API nepareiza lietošana | Svarīgas JVM / vides problēmas |
| Atjaunošana | Bieži iespējama | Reti (norāda uz kļūdu) | Gandrīz neiespējama |
Izņēmumu apstrādes piemērs:
// Checked un unchecked izņēmumu apstrādes piemērs
public class ExceptionHandlingDemo {
public void readFile(String fileName) {
try {
// Mēģinājums nolasīt failu - var izraisīt `FileNotFoundException` (checked)
java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.FileReader(fileName));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
reader.close(); // Arī var izraisīt `IOException` (checked)
// unchecked izņēmuma piemērs (var rasties, ja fileName == null)
int length = fileName.length(); // NullPointerException (unchecked)
} catch (java.io.FileNotFoundException e) {
// `FileNotFoundException` apstrāde
System.err.println("Kļūda: fails nav atrasts - " + e.getMessage());
} catch (java.io.IOException e) {
// Vispārējas IO kļūdas apstrāde
System.err.println("Kļūda, lasot failu: " + e.getMessage());
} catch (java.lang.NullPointerException e) {
// NullPointerException apstrāde - nav obligāta, bet laba prakse
System.err.println("Kļūda: izmantots null saite - " + e.getMessage());
}
}
public static void main(String[] args) {
ExceptionHandlingDemo demo = new ExceptionHandlingDemo();
demo.readFile("non_existent_file.txt"); // izraisīs `FileNotFoundException`
demo.readFile(null); // var izraisīt NullPointerException
}
}