es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es el significado de System.IO.FileNotFoundException?

Tengo este fragmento de código en un programa C#:

ListOfCabins();
ListOfWoodTypes();

La primera función es la siguiente:

private void ListOfCabins()
{
    Logger.Info($"Inicio de la función ListOfCabins()");

    try
    {
    }
    catch (Exception ex)
    {
         ...
    }

    Logger.Info($"Fin de la función ListOfCabins()");
}

La otra función es la siguiente:

private void ListOfWoodTypes()
{
    Logger.Info($"Inicio de la función ListOfWoodTypes()");
    ...

Logger es un objeto típico de NLog:

private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

En los registros, veo:

Fin de la función ListOfCabins()

No veo:

Inicio de la función ListOfWoodTypes()

Mi aplicación se bloquea, en el registro de eventos veo:

Aplicación: ...
Versión del framework: v4.0.30319
Descripción: El proceso se terminó debido a una excepción no controlada.
Información de la excepción: System.IO.FileNotFoundException
  en ...ListOfWoodTypes()
  en ...

Tengo diferentes preguntas aquí:

  • ¿Significa que una System.IO.FileNotFoundException indica que mi aplicación intenta abrir un archivo externo que no está presente, o es algo similar a un proceso de Java que falta un archivo *.class?
  • ¿Por qué una System.IO.FileNotFoundException no es capturada por mi cláusula try ... catch (Exception ex)?
  • ¿Qué pasa con los registros? Espero ver al menos la primera línea de la función ListOfWoodTypes(). ¿Significa esto que hay algún almacenamiento en búfer en la tecnología NLog, que causa un retraso en la creación de registros de NLog en caso de un bloqueo?

Edit1, no es posible depurar

Estoy desarrollando este programa en mi propia PC, lo compilo aquí, pero luego copio el ejecutable en la PC de mi cliente, por lo que no es posible depurar.

Solicitar reapertura

Mi pregunta no tiene nada que ver con “ .NET Global exception handler in console application “, se trata específicamente de esta excepción. Además, esta excepción en particular no se maneja completamente en el registro de eventos de Windows, como se puede ver en mi propia respuesta.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Respuestas

    1. Una System.IO.FileNotFoundException significa que tu aplicación está intentando acceder a un archivo que no existe en la ubicación especificada.

    2. La System.IO.FileNotFoundException no es capturada por tu cláusula try ... catch (Exception ex) porque la excepción que se está lanzando no es del tipo Exception, sino del tipo FileNotFoundException. Si deseas capturar esta excepción específica, reemplaza catch (Exception ex) por catch (FileNotFoundException ex).

    3. En cuanto a los registros, es posible que haya algún almacenamiento en búfer en NLog que haya causado el retraso en el registro de la primera línea de la función ListOfWoodTypes(). Sin embargo, dado que tu aplicación se bloqueó, es probable que las declaraciones de registro no hayan tenido oportunidad de ser guardadas en el archivo de registro. Para asegurarte de que las declaraciones de registro se guarden inmediatamente, puedes llamar a LogManager.Flush() después de registrar eventos importantes.

Comments are closed.