Sobes.tech
Junior — Middle

Дар кадом ҳолатҳо истифодаи блоки finally дар Java барои идоракунии захираҳо ё анҷоми амалҳо мувофиқ аст?

sobes.tech AI

Ҷавоб аз AI

Блоки finally дар Java барои таъмини иҷрои коди истифода мешаванд, ки бояд мустақиман иҷро шавад, новобаста аз он ки истисно рух додааст ё не. Ин махсусан муҳим аст вақте ки бо захираҳое кор мекунем, ки бояд озод карда шаванд, масалан, файлҳо, пайвастагиҳои шабакавӣ, ҷараёнҳо.

Маслиҳат дода мешавад, ки finally истифода шавад, вақте:

  • Захираҳои кушодро мебандед (InputStream, OutputStream, Connection ва ғайра)
  • Тозакунӣ ё барқарор кардани ҳолатро иҷро мекунед
  • Транзаксияҳо ё амалҳое, ки бояд дар ҳар сурат анҷом дода шаванд

Масалан:

FileInputStream fis = null;
try {
    fis = new FileInputStream("file.txt");
    // кор бо файл
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (fis != null) {
        try {
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Дар версияҳои муосири Java, тавсия дода мешавад, ки истифодаи try-with-resources, ки худкор захираҳоро мебандад, истифода шавад, аммо finally барои дигар амалҳои анҷом додан ҳам муҳим аст.