2009-01-23 104 views

Respuesta

43

Hay dos enfoques, puedes codificar en JScript o VBScript que tienen el constructo o puedes cambiarlo en tu código.

El uso de JScript que tendría que utilizar el siguiente tipo de construcción:

<script language="jscript" runat="server"> 
try { 
     tryStatements} 
catch(exception){ 
     catchStatements} 
finally { 
     finallyStatements} 
</script> 

En su código ASP que Fudge mediante el uso de hoja de vida de error siguiente en el punto que tendría una oportunidad y comprobar Err.number en el punto de una captura como:

<% 
Dim i 
' Turn on error Handling 
On Error Resume Next 


'Code here that you want to catch errors from 

' Error Handler 
If Err.Number <> 0 Then 
    ' Error Occurred/Trap it 
    On Error Goto 0 ' But don't let other errors hide! 
    ' Code to cope with the error here 
End If 
On Error Goto 0 ' Reset error handling. 

%> 
+2

+1. Javascript. Si lo necesita, olvide VBscript use javascript. – AnthonyWJones

2

ha pasado un tiempo desde que estaba en ASP tierra, pero IIRC hay un par de maneras:

try catch finally se puede simular razonablemente en VBS (buen artículo here here) y hay un evento llamado class_terminate se puede ver y captura excepciones en todo el mundo. Luego existe la posibilidad de cambiar el lenguaje de scripting ...

+1

Es bueno saber, pero bejeebus eso es feo. Cambiaría el lenguaje de scripting. –

+0

Cuénteme al respecto :-) Tengo que mantener algunos proyectos antiguos y ASP carece de muchas de las características estándar que otros lenguajes de scripting tienen actualmente ... –

+0

try catch finalmente definitivamente _NOT_ existe en VBScript. Ese artículo demuestra un medio para lograr el mismo objetivo, pero es apenas una razón para describir VBS como realmente tener try catch finalmente. – AnthonyWJones

1

Algunos escenarios no siempre permiten a los desarrolladores cambiar el lenguaje de scripting.

Mi preferencia es definitivamente para JavaScript (y lo he usado en nuevos proyectos). Sin embargo, mantener proyectos más antiguos sigue siendo necesario y necesario. Desafortunadamente, estos están escritos en VBScript.

De modo que, aunque esta solución no ofrece la verdadera funcionalidad "probar/atrapar", el resultado es el mismo, y eso es suficiente para que pueda hacer el trabajo.

7

una manera bastante agradable de manejar esto por faltar a clases COM:

Dim o:Set o = Nothing 
On Error Resume Next 
Set o = CreateObject("foo.bar") 
On Error Goto 0 
If o Is Nothing Then 
    Response.Write "Oups, foo.bar isn't installed on this server!" 
Else 
    Response.Write "Foo bar found, yay." 
End If 
4

Para Anytone que ha trabajado en ASP, así como lenguajes más modernos, la cuestión provocará una sonrisa. En mi experiencia, el uso de un controlador de errores personalizado (configurado en IIS para manejar los errores 500; 100) es la mejor opción para el manejo de errores ASP. Este artículo describe el enfoque e incluso le da un ejemplo de código/definición de tabla de base de datos.

http://www.15seconds.com/issue/020821.htm

4

la declaración On Error Resume Next se debe colocar en la parte superior de lo que queremos para validar.

On Error Resume Next 
    'Your code logic is here 

luego terminar con la declaración como:

If Err.Number <> 0 then 

    'Your error message goes here' 

    End if 
9

En cuanto anwer de Wolfwyrd: "On Error Resume Next" de hecho es un manejo de errores de descuento! No en.En caso de error, Goto 0 vuelve a activar el tratamiento de errores porque, como mínimo, queremos que la máquina lo capte si no lo escribimos en nosotros mismos. Off = dejándolo para que lo maneje.

Si utiliza En caso de error Continuar, debe tener cuidado con la cantidad de código que incluye después: recuerde, la frase "Si Número Err. <> 0 Entonces" solo hace referencia al error más previo desencadenado.

Si su bloque de código después de "On Error Resume Next" tiene varios lugares donde razonablemente podría esperar que falle, debe colocar "If Err.number <> 0" después de cada una de esas posibles fallas líneas, para verificar la ejecución.

De lo contrario, después de "on error resume next" significa exactamente lo que dice: el código puede fallar en tantas líneas como quiera y la ejecución continuará felizmente. Es por eso que es un dolor en el culo.

7

1) Añadir On Error Resume Next en la parte superior de la página

2) Agregar siguiente código en la parte inferior de la página

If Err.Number <> 0 Then 

    Response.Write (Err.Description) 

    Response.End 

End If 

On Error GoTo 0 
Cuestiones relacionadas