Sobes.tech
Junior

Kuidas õigesti visata erandeid Java's?

sobes.tech AI

Vastus AI-lt

Erandid tuleks visata, kui toimub ebatavaline olukord, mis rikub programmi normaalse täitmise ja nõuab viivitamatut töötlemist.

Põhialused:

  • kasutage erandeid vigade teavitamiseks, mitte töövoo kontrollimiseks.
  • valige sobivaim standardraamatukogu eranditüüp.
  • looge oma erandiklassid, kui standard ei paku piisavat teavet.
  • lisage erandite sõnumitesse üksikasjalik teave vea põhjuse ja konteksti kohta.
  • ärge püüdke erandeid, mida te ei saa õigesti töödelda. Parim on need edasi visata kõrgemale kutsesilindri kaudu.
  • kasutage try-with-resources plokke ressursside automaatseks sulgemiseks.
  • logige töötlemata või kõrgemale visatud erandeid.

Õige süntaks: throw new MyException("Viga teate");

Näide:

// Oma erandi loomine
public class InvalidParameterException extends Exception {
    public InvalidParameterException(String message) {
        super(message);
    }
}

// Meetod, mis viskab erandi
public int divide(int a, int b) throws InvalidParameterException {
    if (b == 0) {
        throw new InvalidParameterException("Jagamine nulliga on keelatud");
    }
    return a / b;
}

// Meetodi kasutamine ja erandi töötlemine
public void performDivision(int x, int y) {
    try {
        int result = divide(x, y);
        System.out.println("Tulemus: " + result);
    } catch (InvalidParameterException e) {
        // vea logimine
        System.err.println("Jagamise viga: " + e.getMessage());
        // võimalik täiendav töötlemine või edasi viskamine
    }
}

Erandite Checked ja Unchecked erinevused:

Tüüp Pärimine Nõutav töötlemine / deklaratsioon Näide
Checked Exception (välja arvatud RuntimeException) Jah (try-catch või throws) IOException, SQLException
Unchecked RuntimeException Ei (kompilaator ei nõua) NullPointerException, ArrayIndexOutOfBoundsException