Javaда кайсы түрдөгү ката иштетилбейт?
sobes.tech AI
AIден жооп
Ката.
Java бөлүп көрсөтөт (Throwable) үч негизги түргө:
- Текшерилген Исключения (Checked Exceptions): Алар милдеттүү түрдө иштетүүнү же методтун сигнатурасында билдирүүнү талап кылат (
throws). - Текшерилбеген Исключения (Unchecked Exceptions, Runtime Exceptions): Алар милдеттүү иштетүүнү талап кылбайт. Адатта, программалык логикадагы каталарды көрсөтөт.
- Каталар (Errors): Алар Java виртуалдык машинасы же системанын ресурстары менен байланышкан олуттуу көйгөйлөрдү көрсөтөт. Алар программалык коддун деңгээлинде иштетилбейт, анткени алар коддун өзүнүн көйгөйлөрү эмес.
Error мисалдары:
OutOfMemoryError: Java виртуалдык машинасы эс тутумду бөлө алган жок.StackOverflowError: Stackтин ашып кетиши (чоң рекурсиялар).InternalError: Java Virtual Machine ичиндеги каталар.
Error менен иштетүү try-catch аркылуу маанилүү эмес, анткени бул каталар программаны ийгиликтүү калыбына келтире албай турган абалдарды көрсөтөт. Анын ордуна, Error пайда болгондо, программа көбүнчө ишин токтотот.
Техникалык жактан catch (Error e) жазса болот, бирок мындай код жаман практика болуп саналат жана негизги көйгөйдү чечпейт.
try {
// OutOfMemoryError пайда кылуучу код
List<Object> list = new ArrayList<>();
while (true) {
list.add(new Object());
}
} catch (OutOfMemoryError e) {
// Бул блок ишке ашат, бирок кайра калыбына келүү мүмкүн эмес,
// анткени системада жетиштүү эс тутум жок:
System.err.println("Out of memory! Application will likely terminate.");
// Кийинки аракеттер пайдасыз же SecurityException чыгарат:
} catch (Exception e) {
// Башка исключенияларды иштетүү
e.printStackTrace();
}
QA автоматташтырууда, эгер тест учурунда Error пайда болсо, ал көбүнчө тесттик чөйрөнүн көйгөйүн, JVM конфигурациясынын туура эмес экенин же программалык катага байланыштуу олуттуу катаны көрсөтөт, ал критикалык каталарга алып келет, жана ал күтүлгөн иштетилүүчү исключение эмес. Мындай сценарийлер негизинен себептерин изилдөөнү талап кылат, тест кодуна байланыштуу эмес.