Sobes.tech
Junior

Kā pareizi mest izņēmumus Java?

sobes.tech AI

Atbilde no AI

Izņēmumi jāmeta, kad notiek neatbilstoša situācija, kas pārkāpj programmas normālo darbību un prasa nekavējošu apstrādi.

Galvenie principi:

  • izmantojiet izņēmumus kļūdu paziņojumiem, nevis darbības plūsmas kontrolei.
  • izvēlieties vispiemērotāko standarta bibliotēkas izņēmuma tipu.
  • izveidojiet savus izņēmumu klases, ja standarta nesniedz pietiekamu informāciju.
  • iekļaujiet izņēmuma ziņojumā detalizētu informāciju par kļūdas cēloni, tostarp kontekstu.
  • neķeriet izņēmumus, kurus nevarat pareizi apstrādāt. Labāk tos izmetiet augstāk pa izsaukumu ķēdi.
  • izmantojiet try-with-resources blokus resursu automātiskai aizvēršanai.
  • reģistrējiet izņēmumus, kurus apstrādājat vai pārsūtāt uz augšu.

Pareiza sintakse: throw new MyException("Kļūdas ziņojums");

Piemērs:

// Savu izņēmuma izveide
public class InvalidParameterException extends Exception {
    public InvalidParameterException(String message) {
        super(message);
    }
}

// Metode, kas izmet izņēmumu
public int divide(int a, int b) throws InvalidParameterException {
    if (b == 0) {
        throw new InvalidParameterException("Dalīšana ar nulli ir aizliegta");
    }
    return a / b;
}

// Metodes izmantošana un izņēmuma apstrāde
public void performDivision(int x, int y) {
    try {
        int result = divide(x, y);
        System.out.println("Rezultāts: " + result);
    } catch (InvalidParameterException e) {
        // kļūdas reģistrēšana
        System.err.println("Dalīšanas kļūda: " + e.getMessage());
        // iespējams, papildu apstrāde vai pārsūtīšana
    }
}

Atšķirības starp Checked un Unchecked izņēmumiem:

Tips Mantošana Prasība apstrādāt / deklarēt Piemērs
Checked Exception (izņemot RuntimeException) Jā (try-catch vai throws) IOException, SQLException
Unchecked RuntimeException Nē (kompilators neprasa) NullPointerException, ArrayIndexOutOfBoundsException