|
|
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 blokeerimistJärgmine:VS2013, kiiresti mingi kindla koodirea juurde, mis on otsetee?
|