Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 15557|Відповідь: 0

[Зв'язок] Якщо є повернення, спробуйте нарешті зловити наказ на виконання

[Копіювати посилання]
Опубліковано 17.12.2015 12:34:00 | | |
1. Незалежно від того, чи є виняток чи виняток, код у фінальному блоці буде виконаний;
2. Коли є повернення, спроба і ловля, нарешті все одно буде виконано;
3. Нарешті виконується після операції виразу після повернення (на цьому етапі значення після операції не повертається, але значення, яке потрібно повернути, зберігається першим, незалежно від коду в нарешті, повернене значення не змінюється, навіть якщо це вже збережене значення), тому значення функції визначається до остаточного виконання;
4. Краще не включати return final, інакше програма вийде раніше, і повернене значення не є збереженим у try or catch.
Приклад:
Ситуація 1:try{} catch(){}finally{} return;
            Схоже, процедура проводиться по порядку.
Ситуація 2:try{ return; }catch(){} нарешті{} return;
          Програма виконує код перед поверненням у блоці try (включаючи операцію виразу в операторі return);
         потім виконати фінальний блок і нарешті виконати повернення в спробі;
         Нарешті, блокувати Return, бо програма повернулася в try, тому вона більше не виконується.
Ситуація 3:try{ } catch(){return; } нарешті{} повернення;
         Програма виконує спробу першою, і якщо зустрічає виняток, вона виконує блок catch,
         Якщо є виключення, виконайте код перед return (включаючи операцію виразу в операторі return) у catch, а потім виконайте весь код у фінальному операторі.
                     Нарешті, виконайте повернення у блоку ловлення. Після цього код у 4 місцях більше не виконуватиметься.
         Без винятків: виконати спробу і нарешті повернутися.
Ситуація 4:try{ return; }catch(){} нарешті{return; }
          Програма виконує код перед поверненням у блоці try (включаючи операцію виразу в операторі return);
          Потім виконайте фінальний блок, бо у фінальному блоці є повернення, тому виходьте раніше.
Випадок 5:try{} catch(){return; }нарешті{повернутися; }
          Програма виконує код перед поверненням (включаючи операції з виразом у операторі return) у блоці catch;
          Потім виконайте фінальний блок, бо у фінальному блоці є повернення, тому виходьте раніше.
Ситуація 6:try{ return; }catch(){return; } нарешті{return; }
          Програма виконує код перед поверненням у блоці try (включаючи операцію виразу в операторі return);
          Існує виняток: виконати код перед return (включаючи операцію виразу в операторі return) у блоці catch;
                       Потім виконайте фінальний блок, бо в фінальному блоці є повернення, тож він виходить раніше.
          Без винятку: потім виконати останній блок знову і вийти раніше, бо у фінальному блоці є повернення.

Остаточне завершення: Будь-який оператор return у try або catch виконується перед фінальним оператором, якщо він нарешті існує.
                  Якщо в 'Final's є return statement, то програма повернеться, тож return in буде обов'язково повернено.
                  Компілятор нарешті впроваджує return in як попередження.




Попередній:.net використовує HttpListener для прослуховування контенту та потоки для реагування користувачів з метою запобігання блокуванню
Наступний:VS2013, швидко дійдете до певного рядка коду, який короткий шлях?
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com