Sobes.tech
Middle

Aký typ výnimky v Jave je nemožné spracovať?

sobes.tech AI

Odpoveď od AI

Chyba.

Java rozdeľuje výnimky (Throwable) do troch hlavných typov:

  1. Kontrolované výnimky: Vyžadujú povinné spracovanie alebo deklaráciu v podpise metódy (throws).
  2. Neoverené výnimky (Runtime Exceptions): Nevyžadujú povinné spracovanie. Zvyčajne naznačujú chyby v logike programu.
  3. Chyby: Predstavujú vážne problémy súvisiace s virtuálnou strojom Java alebo systémovými zdrojmi. Nemôžu byť spracované na úrovni aplikácie, pretože nie sú problémami samotného kódu.

Príklady Error:

  • OutOfMemoryError: Java virtuálna stroj nemohol alokovať pamäť.
  • StackOverflowError: Došlo k pretečeniu zásobníka (príliš hlboká rekurzia).
  • InternalError: Interná chyba Java Virtual Machine.

Spracovanie Error pomocou try-catch nemá zmysel, pretože tieto chyby ukazujú na stavy, z ktorých sa aplikácia zvyčajne nedokáže úspešne zotaviť. Namiesto toho, pri výskyte Error, aplikácia zvyčajne ukončí.

Hoci je technicky možné napísať catch (Error e), taký kód sa považuje za zlú prax a nevyrieši hlavný problém.

try {
    // Kód, ktorý môže spôsobiť OutOfMemoryError
    List<Object> list = new ArrayList<>();
    while (true) {
        list.add(new Object());
    }
} catch (OutOfMemoryError e) {
    // Tento blok sa vykoná, ale nemôžete sa zotaviť,
    // pretože systém nemá dostatok pamäte.
    System.err.println("Nedostatok pamäte! Aplikácia pravdepodobne skončí.");
    // Ďalšie akcie tu sú zbytočné alebo spôsobia SecurityException
} catch (Exception e) {
    // Spracovanie iných výnimiek
    e.printStackTrace();
}

V QA automatizácii, ak počas vykonávania testu nastane Error, to skôr naznačuje problém s testovacím prostredím, nesprávnu konfiguráciu JVM alebo vážnu chybu v samotnej aplikácii, ktorá viedla k kritickému zlyhaniu, než na očakávanú, spracovateľnú výnimku. Takéto scenáre si vyžadujú vyšetrovanie hlavnej príčiny mimo testovací kód.