Middle
Дар бораи механизми истисно дар Java гап занед.
sobes.tech AI
Ҷавоб аз AI
Дар Java механизмҳои истисно барои коркарди хатоҳо ва дигар ҳолатҳои истисноӣ, ки дар вақти иҷрои барнома рӯй медиҳанд, истифода мешаванд.
Элементҳои асосии механизмҳои истисно:
- Истифода (Exception): Объекти, ки ҳодисаро намоиш медиҳад, ки раванди муқаррарии иҷрои барномаро вайрон мекунад.
- Блокҳои
try,catch,finally: Барои коркарди истисноҳо истифода мешаванд.try: Блоки коди, ки дар он мумкин аст истисно рӯй диҳад.catch: Блоки коди, ки иҷро мешавад, агар дар блокиtryистиснои муайян рӯй диҳад.finally: Блоки коди, ки ҳамеша иҷро мешавад, новобаста аз он ки истисно рӯй дод ё не. Барои озод кардани захираҳо истифода мешавад.
- Калидвожа
throw: Барои эҷод ва партофтани истиснои равшан истифода мешавад. - Калидвожа
throws: Дар сигнатураи метод барои эълон кардани намудҳои истисноҳо, ки метод метавонад партояд, истифода мешавад.
Иерархияи истисноҳо дар Java:
Throwable: Класси асосӣ барои ҳама истисноҳо ва хатоҳо.Error: Намояндаи масъалаҳои ҷиддӣ, ки барнома одатан наметавонад барқарор кунад (масалан,OutOfMemoryError).Exception: Намояндаи истисноҳо, ки барнома метавонад онҳоро дарёфт ва коркард кунад.RuntimeException(Unchecked Exceptions): Истисноҳое, ки талаб намекунанд коркард ё эълон дар сигнатураи метод (масалан,NullPointerException,ArrayIndexOutOfBoundsException).- Checked Exceptions: Истисноҳое, ки бояд ё бо истифода аз блоки
try-catchкоркард шаванд ё боthrowsдар сигнатураи метод эълон шаванд (масалан,IOException,FileNotFoundException).
Маслиҳат барои коркарди истисно:
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("Натиҷа: " + result);
} catch (ArithmeticException e) {
// Коркарди истиснои ArithmeticException
System.err.println("Хатогӣ: тақсим ба нуло иҷозатнопазир аст.");
System.err.println("Тафсилоти истисно: " + e.getMessage());
e.printStackTrace(); // Намоиши стеки занҷир
} finally {
// Ин блок ҳамеша иҷро мешавад
System.out.println("Блоги finally иҷро шуд.");
}
}
public static int divide(int a, int b) {
// Мумкин аст истиснои ArithmeticException-ро партояд, агар b = 0
return a / b;
}
}
Маслиҳат барои истифодаи throws:
import java.io.FileReader;
import java.io.IOException;
public class ThrowsExample {
public static void readFile(String filename) throws IOException {
// Мумкин аст IOException-ро партояд
FileReader reader = new FileReader(filename);
// Корҳои минбаъдаи бо файл
}
public static void main(String[] args) {
try {
readFile("файл_небасте.txt");
} catch (IOException e) {
System.err.println("Хатогӣ дар хондани файл: " + e.getMessage());
}
}
}