|
|
Публикувано в 17.12.2015 г. 12:34:00 ч.
|
|
|

1. Независимо дали има изключение или изключение, кодът във финалния блок ще бъде изпълнен; 2. Когато има връщане в опит и хващане, накрая все пак ще бъде изпълнено; 3. Накрая се изпълнява след операцията с израз след връщане (в този момент стойността след операцията не се връща, но стойността, която трябва да се върне, се запазва първа, независимо от кода в най-накрая, върнатата стойност няма да се промени, дори ако е вече запазената стойност), така че стойността на функцията се определя преди окончателното изпълнение; 4. Най-добре е да не се включва return накрая, в противен случай програмата ще излезе рано, а стойността на връщането не е стойността, запазена в try or catch. Пример:
Ситуация 1:try{} catch(){}finally{} return;
Очевидно процедурата се извършва по ред.
Ситуация 2:try{ return; }catch(){} накрая{} return;
Програмата изпълнява кода преди връщането в try блока (включително операцията с израз в return оператора);
след това изпълни финалния блок и накрая върна в опит;
Накрая блокира Return, защото програмата се е върнала в TRY, така че вече не се изпълнява.
Ситуация 3:try{ } catch(){return; } накрая{} връщане;
Програмата изпълнява try първа, и ако срещне изключение, изпълнява catch block,
Ако има изключение, изпълнете кода преди return (включително операцията израз в изявлението return) в улавянето, а след това изпълнете целия код във финалното изявление.
Накрая, изпълнете връщането в блока за хващане. След това кодът на 4 места вече няма да се изпълнява.
Без изключение: Execute, try и накрая return.
Ситуация 4:try{ return; }catch(){} накрая{return; }
Програмата изпълнява кода преди връщането в try блока (включително операцията с израз в return оператора);
След това изпълни последния блок, защото има връщане в последния блок, така че излез по-рано.
Случай 5:try{} catch(){return; }накрая{връщане; }
Програмата изпълнява кода преди return (включително операции с изрази в оператора return) в блока за улавяне;
След това изпълни последния блок, защото има връщане в последния блок, така че излез по-рано.
Ситуация 6:try{ return; }catch(){return; } накрая{връщане; }
Програмата изпълнява кода преди връщането в try блока (включително операцията с израз в return оператора);
Има изключение: изпълни кода преди return (включително операцията израз в оператора return) в блока за улавяне;
След това изпълни финалния блок, защото има return в финалния блок, така че излиза рано.
Без изключение: след това изпълни последния блок отново и излез по-рано, защото има връщане в финалния блок.
Окончателен извод: Всяко return в try или catch се изпълнява преди финалната оператора, ако най-накрая съществува.
Ако накрая има декларация за връщане, тогава програмата ще се върне, така че връщането в крайна сметка определено ще бъде върнато.
Компилаторът реализира return in накрая като предупреждение.
|
Предишен:.net използва HttpListener за слушане на съдържание и използва нишки, за да отговаря на потребителите с цел предотвратяване на блокиранеСледващ:VS2013, бързо достигане на определен ред код, какъв е краткият път?
|