Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 15557|Răspunde: 0

[Comunicare] Dacă există întoarcere, încearcă să prinzi în sfârșit ordinea de execuție

[Copiază linkul]
Postat pe 17.12.2015 12:34:00 | | |
1. Indiferent dacă există o excepție sau o excepție, codul din blocul final va fi executat;
2. Când există întoarcere în încercare și prindere, în final tot va fi executat;
3. În final este executat după operația de expresie după returnare (în acest moment, valoarea după operație nu este returnată, dar valoarea de returnat este salvată prima, indiferent de codul din final, valoarea returnată nu se va schimba, chiar dacă este valoarea salvată anterior), astfel încât valoarea returnată a funcției este determinată înainte de execuția finală;
4. Este mai bine să nu incluzi return în final, altfel programul va ieși mai devreme, iar valoarea returnării nu este valoarea returnată salvată în încercare sau prindere.
Exemplu:
Situația 1:try{} catch(){}finally{} return;
            Se pare că procedura se desfășoară în ordine.
Situația 2:try{ return; }catch(){} finally{} return;
          Programul execută codul înainte de return în blocul try (inclusiv operația de expresie în instrucțiunea return);
         apoi execută blocul final și în final execută returnarea în try;
         în final block return, pentru că programul a returnat în try, deci nu mai este executat.
Situația 3:try{ } catch(){return; } în sfârșit{} return;
         Programul execută try primul, iar dacă întâlnește o excepție, execută blocul de prindere,
         Dacă există o excepție, se execută codul înainte de return (inclusiv operația de expresie din instrucțiunea return) în catch, apoi se execută tot codul din afirmația finală.
                     În final, execută returnarea în blocul de prindere. După ce în cele din urmă, codul din 4 locuri nu va mai fi executat.
         Fără excepție: Execută, încearcă și apoi în cele din urmă returnează.
Situația 4:try{ return; }catch(){} în sfârșit{return; }
          Programul execută codul înainte de return în blocul try (inclusiv operația de expresie în instrucțiunea return);
          Apoi execută blocul final, pentru că există return în blocul final, deci ieși mai devreme.
Cazul 5:try{} catch(){return; }finally{return; }
          Programul execută codul înainte de return (inclusiv operațiunile de expresie din instrucțiunea return) în blocul de prindere;
          Apoi execută blocul final, pentru că există return în blocul final, deci ieși mai devreme.
Situația 6:try{ return; }catch(){return; } în sfârșit{return; }
          Programul execută codul înainte de return în blocul try (inclusiv operația de expresie în instrucțiunea return);
          Există o excepție: execută codul înainte de return (inclusiv operația de expresie din instrucțiunea return) în blocul de captură;
                       Apoi execută blocul final, pentru că există retur în blocul final, deci iese mai devreme.
          Fără excepție: apoi execută din nou blocul final și ieși mai devreme pentru că există retur în blocul final.

Concluzie finală: Orice instrucțiune return în try sau catch este executată înainte de afirmația finală, dacă există în cele din urmă.
                  Dacă există o revenire în final, atunci programul va returna, deci returnarea în finally va fi cu siguranță returnată.
                  Compilatorul implementează returnarea în finally ca avertisment.




Precedent:.net folosește HttpListener pentru a asculta conținutul și folosește fire de discuție pentru a răspunde utilizatorilor și a preveni blocarea
Următor:VS2013, ajungi rapid la o anumită linie de cod, care este scurtătura?
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com