Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 15557|Resposta: 0

[Comunicação] Se houver retorno, tente pegar finalmente a ordem de execução

[Copiar link]
Publicado em 17/12/2015 12:34:00 | | |
1. Independentemente de haver uma exceção ou uma exceção, o código no bloco final será executado;
2. Quando houver retorno em tentativa e captura, finalmente ainda será executado;
3. Finally é executado após a operação de expressão após retorno (neste momento, o valor após a operação não é retornado, mas o valor a ser retornado é salvo primeiro, independentemente do código em finalmente, o valor retornado não mudará, mesmo que seja o valor previamente salvo), então o valor de retorno da função é determinado antes da execução final;
4. É melhor não incluir return em finalmente, caso contrário o programa sai cedo, e o valor return não é o valor de retorno salvo em try or catch.
Exemplo:
Situação 1:try{} catch(){}finally{} return;
            Aparentemente, o procedimento é realizado em ordem.
Situação 2:try{ return; }catch(){} finalmente{} retorno;
          O programa executa o código antes do return no bloco try (incluindo a operação de expressão na instrução return);
         depois execute o bloco final, e finalmente execute o retorno em try;
         finalmente retorno de bloco, porque o programa retornou em try, então não é mais executado.
Situação 3:try{ } catch(){return; } finalmente{} retornar;
         O programa executa try primeiro, e se encontrar uma exceção, executa o bloco de captura,
         Se houver uma exceção, execute o código antes do return (incluindo a operação de expressão na instrução return) na captura e então execute todo o código na instrução final.
                     Por fim, execute o retorno no bloqueio de captura. Depois disso, o código em 4 lugares deixará de ser executado.
         Sem exceção: Executar, tentar e finalmente retornar.
Situação 4:try{ return; }catch(){} finalmente{return; }
          O programa executa o código antes do return no bloco try (incluindo a operação de expressão na instrução return);
          Depois, execute o bloco final, porque há retorno no bloco final, então saia cedo.
Caso 5:try{} catch(){return; }finalmente{retorno; }
          O programa executa o código antes do return (incluindo operações de expressão na instrução return) no bloco catch;
          Depois, execute o bloco final, porque há retorno no bloco final, então saia cedo.
Situação 6:try{ return; }catch(){return; } finalmente{return; }
          O programa executa o código antes do return no bloco try (incluindo a operação de expressão na instrução return);
          Há uma exceção: executar o código antes do return (incluindo a operação de expressão na instrução return) no bloco catch;
                       Depois execute o bloqueio final, porque há retorno no bloco final, então ele sai cedo.
          Sem exceção: então execute o bloco final novamente e saia cedo porque há retorno no bloco final.

Conclusão final: Qualquer instrução return em try ou catch é executada antes da instrução final, se finalmente existir.
                  Se houver uma declaração de retorno em final, então o programa retornará, então a declaração em finalmente será definitivamente devolvida.
                  O compilador implementa o retorno em finally como um aviso.




Anterior:.net usa o HttpListener para ouvir conteúdo e usa threads para responder aos usuários e evitar bloqueios
Próximo:VS2013, chegar rapidamente a uma certa linha de código, qual é o atalho?
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com