Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 15557|Respuesta: 0

[Comunicación] Si hay retorno, intenta atrapar finalmente la orden de ejecución

[Copiar enlace]
Publicado en 17/12/2015 12:34:00 | | |
1. Independientemente de si hay una excepción o una excepción, el código del bloque final se ejecutará;
2. Cuando hay retorno en intento y captura, finalmente se ejecutará igualmente;
3. Finally se ejecuta después de la operación de expresión tras return (en este momento, el valor posterior a la operación no se devuelve, pero el valor a devolver se guarda primero, independientemente del código en final, el valor devuelto no cambiará, aunque sea el valor guardado anteriormente), por lo que el valor de retorno de función se determina antes de la ejecución final;
4. Es mejor no incluir return en final, de lo contrario el programa saldrá antes de tiempo y el valor return no es el valor de return guardado en try or catch.
Ejemplo:
Situación 1:try{} catch(){}finally{} return;
            Aparentemente, el procedimiento se realiza en orden.
Situación 2:try{ return; }catch(){} finalmente{} regresar;
          El programa ejecuta el código antes de return en el bloque try (incluyendo la operación de expresión en la instrucción return);
         luego ejecutar el bloque final, y finalmente ejecutar el retorno en try;
         finalmente retorno por bloque, porque el programa ha regresado en try, así que ya no se ejecuta.
Situación 3:try{ } catch(){return; } finalmente{} return;
         El programa ejecuta try primero, y si encuentra una excepción, ejecuta el bloque de captura,
         Si hay una excepción, ejecuta el código antes de return (incluida la operación de expresión en la sentencia return) en la captura y luego ejecuta todo el código en la sentencia final.
                     Finalmente, ejecuta el retorno en el bloqueo de captura. Al final, el código en 4 lugares dejará de ejecutarse.
         Sin excepción: Ejecuta, intenta y finalmente regresa.
Situación 4:try{ return; }catch(){} finalmente{return; }
          El programa ejecuta el código antes de return en el bloque try (incluyendo la operación de expresión en la instrucción return);
          Luego ejecuta el bloque final, porque hay retorno en el bloque final, así que sal pronto.
Caso 5:try{} catch(){return; }finalmente{return; }
          El programa ejecuta el código antes de return (incluyendo las operaciones de expresión en la instrucción return) en el bloque de captura;
          Luego ejecuta el bloque final, porque hay retorno en el bloque final, así que sal pronto.
Situación 6:try{ return; }catch(){return; } finalmente{return; }
          El programa ejecuta el código antes de return en el bloque try (incluyendo la operación de expresión en la instrucción return);
          Hay una excepción: ejecutar el código antes de return (incluida la operación de expresión en la instrucción return) en el bloque de captura;
                       Luego ejecuta el bloque final, porque hay retorno en el bloque final, así que sale pronto.
          Sin excepción: luego ejecuta el bloque final de nuevo y sal antes porque hay retorno en el bloque final.

Conclusión final: Cualquier sentencia return en try o catch se ejecuta antes de la sentencia final, si finalmente existe.
                  Si hay un extracto de retorno en final, entonces el programa volverá, así que la declaración en finally definitivamente será devuelta.
                  El compilador implementa el retorno en finally como advertencia.




Anterior:.net utiliza HttpListener para escuchar contenido y utiliza hilos para responder a los usuarios y evitar el bloqueo
Próximo:VS2013, llega rápidamente a cierta línea de código, ¿cuál es el atajo?
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com