See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 15557|Vastuse: 0

[Kommunikatsioon] Kui on tagastus, proovi lõpuks püüda täideviimise järjekord

[Kopeeri link]
Postitatud 17.12.2015 12:34:00 | | |
1. Sõltumata sellest, kas on erand või erand, täidetakse lõplikus plokis olev kood;
2. Kui on tagasipöördumine proovi ja püüdmise reaktsioonis, siis lõpuks täidetakse see ikkagi;
3. Lõpuks täidetakse pärast avaldise operatsiooni pärast tagastamist (sel hetkel ei tagastata operatsiooni järgset väärtust, kuid tagastatav väärtus salvestatakse esimesena, sõltumata koodist, tagastatud väärtus ei muutu, isegi kui see on varem salvestatud väärtus), seega määratakse funktsiooni tagastuse väärtus enne lõplikku täitmist;
4. Parim on mitte lisada returni lõpuks sisse, vastasel juhul väljub programm varakult ja return väärtus ei ole return väärtus, mis on salvestatud try or catch'is.
Näide:
Olukord 1:try{} catch(){}finally{} return;
            Tundub, et protseduur viiakse läbi õiges järjekorras.
Olukord 2:try{ return; }catch(){} lõpuks{} tagasi;
          Programm käivitab koodi enne returni try plokis (sh avaldise operatsioon return-lauses);
         seejärel sooritada viimane blokeering ja lõpuks sooritada tagasipöördumine katses;
         Lõpuks blokeeri return, sest programm on TRY-s tagasi tulnud, seega seda enam ei käivitata.
Olukord 3:try{ } catch(){return; } lõpuks{} tagasitulek;
         Programm käivitab try first ja kui see kohtab erandit, täidab ta catch blocki,
         Kui on erand, käivita kood enne tagastamist (sh avaldise operatsioon tagasipöördumislauses) püügis ja seejärel käivita kogu lõpplause kood.
                     Lõpuks soorita tagasipöördumine püüdmise blokeeringus. Lõpuks ei käivitata 4 koha koodi enam.
         Erandeid pole: Käivita katse ja lõpuks tagasta.
Olukord 4:try{ return; }catch(){} lõpuks{tagasi; }
          Programm käivitab koodi enne returni try plokis (sh avaldise operatsioon return-lauses);
          Seejärel täida viimane plokk, sest viimases plokis on tagasitulek, seega lahku varakult.
Juhtum 5:try{} catch(){return; }lõpuks{tagasi; }
          Programm käivitab koodi enne tagastamist (sh avaldisoperatsioonid tagastamislauses) catch-plokis;
          Seejärel täida viimane plokk, sest viimases plokis on tagasitulek, seega lahku varakult.
Olukord 6:try{ return; }catch(){return; } lõpuks{tagasi; }
          Programm käivitab koodi enne returni try plokis (sh avaldise operatsioon return-lauses);
          On erand: käivitada kood enne tagastamist (sh avaldise operatsioon tagastamislauses) catch plokis;
                       Seejärel täida viimane blokeering, sest lõpuplokis on tagasitulek, nii et see väljub varakult.
          Erandeid pole: siis täida viimane plokk uuesti ja välju varakult, sest lõppplokis on tagasitulek.

Lõplik järeldus: Iga tagastamislause proovimisel või püüdmisel täidetakse enne lõplikku lauset, kui see lõpuks eksisteerib.
                  Kui lõpuks on tagastusavaldus, siis programm tuleb tagasi, seega tagastatakse see lõpuks kindlasti.
                  Kompilaator rakendab lõpuks tagasipöördumise hoiatuseks.




Eelmine:.net kasutab sisu kuulamiseks HttpListenerit ja kasutajatele vastamiseks lõime, et vältida blokeerimist
Järgmine:VS2013, kiiresti mingi kindla koodirea juurde, mis on otsetee?
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com