2011-09-01 16 views
7

H Tenemos la función de utilidad de registro que llamamos bastante a menudo y quería darle más vida agregando una llamada a Server.GetLastError() y si también hay un error para iniciar sesión. La función de registro es parte de un proyecto por separado, así que traté de usar HttpContext.Current.Server.GetLastError() (como lo hago para las propiedades Solicitud, ServidorVariables y Sesión). Durante las pruebas que creé excepción sencilla:

int i=0, j=0; 
try 
{ 
    int k = i/j; 
} 
catch (Exception E) 
{ 
    Tools.CooLog("in"); 
} 
Tools.CooLog("out"); 

Con el fin de averiguar si "HttpContext.Current.Server.GetLastError()" devolverá la excepción cuando se llama Tools.CooLog("out");.

En su lugar tuve dos grandes sorpresas 1. En las dos llamadas HttpContext.Current.Server.GetLastError() devolvió nulo. 2. Y tal vez lo más extraño es que durante la primera llamada de CooLog en la sección local vi un poco de mi versión joven, atractiva y PHP: vi que hay un valor llamado $ exception y sorprendentemente tiene la excepción de que HttpContext.Current.Server.GetLastError() falló para recuperar!

$exception is defined and HttpContext.Current.Server.GetLastError() fails

Así que mis preguntas son 1. ¿Por qué la HttpContext.Current.Server.GetLastError() devuelve un valor nulo? (HttpContext.Current.Request.ServerVariables funciona bien) 2. ¿De dónde viene esa excepción? ¿Hay alguna manera de usarlo? (en la segunda llamada a CooLog, la variable no está definida)

Respuesta

6

Esa es una variable de depurador especial. No puedes acceder a ella por código.

La razón por la que no lo ve en la ventana Inspección, es que la excepción ha sido o bien:

  • manejado

o

  • El evento Application.Error no ha sido despedido todavía
+0

gran respuesta informativa :) gracias – SimSimY

3

$exception es solo la excepción por la que el depurador pausó la ejecución de su programa. Es lo mismo que la excepción a la que puede acceder en su bloque catch, en su caso E.

Cuestiones relacionadas