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-resourcesblokus 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 |