Որ տեսակ արտակարգ իրավիճակ 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), such code is considered bad practice and does not solve the main problem.
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-ի սխալ կոնֆիգուրացիա կամ լուրջ թերություն ծրագրում, որը հանգեցրել է կրիտիկական սխալի, քան սպասվող մշակվող արտահայտություն։ Այդ սցենարները պահանջում են պատճառահետազոտություն՝ դուրս թեստային կոդից։