El error de "tiempo de ejecución de Script superado" es el único que no se puede capturar en una página Web debido a que, si el Script tarda mucho, IIS termina su ejecución y por lo tanto, por definición, no podemos capturarlo desde nuestro propio Script.
Sin embargo existe un truco muy interesante que nos permitirá hacerlo sin problemas.

Se trata de utilizar el modo transaccional de las páginas Web ASP. En este modo, si el script falla por cualquier razón (incluyendo la de que tarde mucho en ejecutarse), el sistema revoca la transacción y llama siempre a la función OnTransactionAbort(), que debe existir en la página. Esto lo podemos aprovechar para hacer lo que queramos tras el error. Por ejemplo, el siguiente código captura el error y muestra un mensaje cuando se produce un "Script timeout":

   <%@ TRANSACTION=Required LANGUAGE="VBScript" %> 'Esto la convierte en transaccional
   <HTML>
   <BODY BGCOLOR="White" topmargin="10" leftmargin="10">
   <font size="4" face="Arial, Helvetica">
   <b>Página transaccional</b></font><br>
   <hr size="1" color="#000000">
   <p>
Este es un ejemplo de transacción abortada por exceso de tiempo </p> <p> Espera a que termine de ejecutarse el bucle infinito... </p> <% Do while 1 = 1 'Bucle infinito Loop %> </BODY> </HTML> <% ' Este es el manejador de una transacción abortada Sub OnTransactionAbort() Response.Write "<p><b>La transacción acaba de abortar porque se superó el tiempo de ejecución del Script</b>." End sub %>

El tiempo máximo de ejecución de un Script (a través de Server.ScriptTimeOut) es de 24 h, es decir de 24x60x60 = 86.400 segundos. Si se intenta ajustar un valor mayor a esta propiedad se produce un error.

 

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA