• Sign in
 
  •  
  • MSDN Blogs
  • Microsoft Blog Images
  • More ...
Common Tasks
  • Blog Home
  • Email Blog Author
  • About
  • RSS for comments
  • RSS for posts
Blog - News
Search
Recent Posts
  • Digest Authentication in System.Net classes don't fully comply with RFC2617

    Posted 2 months ago
    by Daniel Mossberg
      0 Comments
  • Corrupción de las claves RSA y la importancia de hacer backup

    Posted 11 months ago
    by Daniel Mossberg
      0 Comments
  • Modelos de programación en ASP.NET: Web Forms, MVC y Web Pages

    Posted over 1 year ago
    by Daniel Mossberg
      4 Comments
  • HttpException: An error occurred while attempting to impersonate

    Posted over 3 years ago
    by Daniel Mossberg
      2 Comments
  • Problemas al subir ficheros a una aplicación ASP.NET

    Posted over 3 years ago
    by Daniel Mossberg
      0 Comments
Tags
  • ASP
  • ASP.NET
  • Common Language Runtime (CLR)
  • Debugging
  • Ejemplos de Código
  • Failed Request Tracing
  • Herramientas
  • IIS 6.0
  • IIS 7.0
  • Kerberos
  • Log Parser
  • Pages
  • Seguridad
  • Silverlight
  • SSL/TLS
Archives
Archives
  • February 2013 (1)
  • May 2012 (2)
  • November 2010 (1)
  • August 2010 (1)
  • April 2010 (1)
  • March 2010 (2)
  • February 2010 (2)
  • January 2010 (2)
  • December 2009 (5)
  • October 2009 (1)
  • September 2009 (3)
  • August 2009 (1)
  • July 2009 (2)
  • May 2009 (2)
  • April 2009 (4)
  • February 2009 (1)
  • January 2009 (1)
  • December 2008 (1)
Web Developer Support Blogs
  • If broken it is, fix it you should

  • Notes from a dark corner

  • Never doubt thy debugger

  • Speaking of which...

  • Desarrollo Web

Server and Tools Blogs
  • Windows 8 app developer blog

  • The Visual Studio Blog

  • .NET Web Development and Tools Blog

  • .NET Framework Blog

  • The Windows Phone Developer Blog

  • ScottGu's Blog

  • Scott Hanselman's Computer Zen

¿Qué son las excepciones de first chance y second chance?

¿Qué son las excepciones de first chance y second chance?

Daniel Mossberg
26 Feb 2010 5:51 AM
  • Comments 2

Cuando adjuntamos un depurador a un proceso y se produce una excepción, el depurador es el primero en ser notificado de esa excepción. El depurador puede manejarla, o simplemente dejar que la ejecución siga su curso, en cuyo caso el siguiente en ser notificado de la excepción es la propia aplicación. Por lo tanto, esta primera oportunidad que tiene el depurador para capturar una excepción se llama first chance. Examinando las excepciones con un depurador como WinDbg, podríamos ver algo parecido a esto:

(1f68.140c): CLR exception - code e0434f4d (first chance)

First chance exceptions are reported before any exception handling.

This exception may be expected and handled.

KERNELBASE!RaiseException+0x39:

000007fe`fcfcaa7d 4881c4c8000000  add     rsp,0C8h

 

Examinando los detalles de la excepción .NET en cuestión (CLR Exception), podríamos ver que el depurador está capturando la siguiente excepción System.Web.HttpException:

 

0:032> !printexception

Exception object: 0000000155a173b8

Exception type: System.Web.HttpException

Message: The file '/myApp/myUserControl.ascx' does not exist.

InnerException: <none>

StackTrace (generated):

<none>

StackTraceString: <none>

HResult: 80004005

 

En esta ocasión, la aplicación ASP.NET maneja la excepción adecuadamente, y el problema no pasa a mayores. No obstante, se puede dar la circunstancia de que la aplicación no maneje la excepción, o no pueda manejarla, en cuyo caso se lanzaría una excepción de second chance. Las excepciones de second chance son la segunda y última oportunidad de capturar una excepción. En la mayoría de los casos, cuando se produce una excepción de second chance, la ejecución el proceso finaliza inmediatamente, se produce un crash.

 

En el siguiente ejemplo, vemos como se produce una excepción de Stack Overflow, y al no ser manejada por la aplicación (las excepciones de Stack Overflow particularmente, no se pueden manejar) se lanza primero una excepción de first chance, y posteriormente en la misma instrucción de ensamblador, se lanza la excepción de second chance. que provoca la finalización del proceso:

 

(1f60.1c0c): Stack overflow - code c00000fd (first chance)

First chance exceptions are reported before any exception handling.

This exception may be expected and handled.

eax=00032000 ebx=7ffd9000 ecx=0001f208 edx=7c82860c esi=00000000 edi=00000000

eip=00401237 esp=000378b4 ebp=000378bc iopl=0         nv up ei pl nz na pe nc

cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010206

StackOverflow!_chkstk+0x27:

00401237 8500            test    dword ptr [eax],eax  ds:0023:00032000=00000000

 

(1f60.1c0c): Stack overflow - code c00000fd (!!! second chance !!!)

eax=00032000 ebx=7ffd9000 ecx=0001f208 edx=7c82860c esi=00000000 edi=00000000

eip=00401237 esp=000378b4 ebp=000378bc iopl=0         nv up ei pl nz na pe nc

cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010206

StackOverflow!_chkstk+0x27:

00401237 8500            test    dword ptr [eax],eax  ds:0023:00032000=00000000

 

Dependiendo del tipo de escenarios que estemos investigando, puede ser relevante analizar las excepciones de first chance, las de second chance, o las dos.  

 

Hasta el próximo post,

- Daniel Mossberg

  • 2 Comments
Debugging
Leave a Comment
  • Please add 4 and 7 and type the answer here:
  • Post
Comments
  • Barok
    3 Jun 2010 3:45 AM

    Hola, queria preguntarte, a ser posible, si estas excepciones son un problema para certificar una aplicacion de windows mobile.

    La "first chance exception" me la genera el codigo autogenerado de windos mobile, cuando añado imagenes a un imageList.

    resources.getObject("resource") produce la excepcion.

    Pero igualmente carga bien las imagenes.

    Simplemente tengo la duda si debo hacer la vista gorda o no.

    gracias i saludos!

  • Daniel Mossberg
    3 Jun 2010 7:50 AM

    Hola Barok,

    Con los datos que me aportas es imposible responder a tu pregunta, pero la respuesta genérica sería que depende del tipo de excepción.

    Es posible que tu problema sea el que se describe en el siguiente foro, en cuyo caso la solución parece ser no utilizar ImageList (por motivos de escalabilidad):

    ImageList throws exception ALWAYS

    social.msdn.microsoft.com/.../f263e4ed-b60f-4ddf-90b3-6d25f3554d77

    Saludos,

    Daniel

Page 1 of 1 (2 items)
  • © 2013 Microsoft Corporation.
  • Terms of Use
  • Trademarks
  • Privacy & Cookies
  • Report Abuse
  • 5.6.426.415