Sobes.tech
Middle

Որ տեսակ արտակարգ իրավիճակ Java-ում հնարավոր չէ մշակել?

sobes.tech AI

Պատասխան AI-ից

Սխալ։

Java-ն բաժանում է արտահայտությունները (Throwable) երեք հիմնական տեսակների.

  1. Ստուգված արտահայտություններ (Checked Exceptions): Պահանջում են պարտադիր մշակում կամ հայտարարում են մեթոդի սիգնատուրայում (throws):
  2. Չստուգված արտահայտություններ (Unchecked Exceptions, Runtime Exceptions): Չպահանջում են պարտադիր մշակում։ Սովորաբար ցույց են տալիս ծրագրի տրամաբանության սխալներ:
  3. Սխալներ (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-ի սխալ կոնֆիգուրացիա կամ լուրջ թերություն ծրագրում, որը հանգեցրել է կրիտիկական սխալի, քան սպասվող մշակվող արտահայտություն։ Այդ սցենարները պահանջում են պատճառահետազոտություն՝ դուրս թեստային կոդից։