Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 15557|Odpověď: 0

[Komunikace] Pokud je návrat, zkuste nakonec chytit pořadí provedení

[Kopírovat odkaz]
Zveřejněno 17.12.2015 12:34:00 | | |
1. Bez ohledu na to, zda existuje výjimka nebo výjimka, kód v posledním bloku bude vykonán;
2. Když dojde k návratu ve snaze a chycení, nakonec bude stále popraven;
3. Nakonec se vykoná po operaci výrazu po návratu (v tomto okamžiku se hodnota po operaci nevrátí, ale hodnota, která má být vrácena, se uloží jako první, bez ohledu na kód, nakonec se vrácená hodnota nezmění, i když je to dříve uložená hodnota), takže hodnota návratu funkce je určena před konečným vykonáním;
4. Nejlepší je návrat nezahrnout do konce, jinak program ukončí program dříve a hodnota návratu není hodnotou uloženou v pokusu nebo chycení.
Příklad:
Situace 1:try{} catch(){}final{} return;
            Zřejmě se zákrok provádí v pořadí.
Situace 2:try{ return; }catch(){} konečně{} return;
          Program vykoná kód před return v try-bloku (včetně operace výrazu v příkazu return);
         poté provedete poslední blok a nakonec proveďte návrat v try;
         Nakonec zablokujte return, protože program se vrátil v try, takže se již nespouští.
Situace 3:try{ } catch(){return; } konečně{} návrat;
         Program vykoná try jako první, a pokud narazí na výjimku, provede catch block,
         Pokud existuje výjimka, spusť kód před return (včetně operace výrazu v příkazu return) v catchu a poté vykonat veškerý kód v závěrečném příkazu.
                     Nakonec proveďte return v catch blocku. Nakonec se kód na 4 místech již nebude vykonávat.
         Bez výjimky: Vykonej, zkusíš a pak se nakonec vrať.
Situace 4:try{ return; }catch(){} final{return; }
          Program vykoná kód před return v try-bloku (včetně operace výrazu v příkazu return);
          Pak proveďte poslední blok, protože v posledním bloku je návrat, takže odejděte dříve.
Případ 5:try{} catch(){return; }konečně{return; }
          Program vykoná kód před return (včetně výrazových operací v příkazu return) v catch bloku;
          Pak proveďte poslední blok, protože v posledním bloku je návrat, takže odejděte dříve.
Situace 6:try{ return; }catch(){return; } nakonec {return; }
          Program vykoná kód před return v try-bloku (včetně operace výrazu v příkazu return);
          Existuje výjimka: skonecujte kód před return (včetně operace výrazu v příkazu return) v bloku catch;
                       Pak proveďte závěrečný blok, protože v posledním bloku je návrat, takže končí dříve.
          Bez výjimky: pak znovu proveďte poslední blok a odejděte dříve, protože v posledním bloku je návrat.

Konečný závěr: Jakýkoli příkaz return v try or catch se vykoná před finálním příkazem, pokud skutečně existuje.
                  Pokud je v konečném případě příkaz return, program se vrátí, takže return in nakonec bude určitě vrácen.
                  Kompilátor nakonec implementuje návrat jako varování.




Předchozí:.net používá HttpListener k poslechu obsahu a vlákna k odpovědi uživatelům, aby zabránil blokování
Další:VS2013, rychle se dostat k určitému řádku kódu, jaká je ta zkratka?
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com