Saltar al contenido

Cómo manejar correctamente las excepciones al realizar el archivo io

Presta atención porque en este escrito hallarás la solución que buscas.

Solución:

… pero ¿es posible obtener mensajes de error un poco más detallados?

Si. Adelante y atrapa IOException, y usa el Exception.ToString() método para que se muestre un mensaje de error relativamente relevante. Tenga en cuenta que las excepciones generadas por .NET Framework proporcionarán estas útiles cadenas, pero si va a lanzar su propia excepción, debe recordar conectar esa string en el Exceptionconstructor de, como:

throw new FileNotFoundException("File not found");

Además, absolutamente, según Scott Dorman, use eso using declaración. Sin embargo, lo que hay que notar es que el using la declaración en realidad no catch cualquier cosa, que es la forma en que debería ser. Su prueba para ver si el archivo existe, por ejemplo, introducirá una condición de carrera que puede ser bastante molesta. Realmente no te hace ningún bien tenerlo ahí. Entonces, ahora, para el lector tenemos:

try   
    using (StreamReader reader = file.OpenText())   
        // Your processing code here  
      
 catch (IOException e)   
    UI.AlertUserSomehow(e.ToString());  

En resumen, para operaciones básicas de archivos:
1. Utilizar using

2, envuelva la declaración de uso o la función en un try/catch ese catches IOException

3. Utilice Exception.ToString() en tus catch para obtener un mensaje de error útil
4. No intente detectar usted mismo problemas de archivos excepcionales. Deje que .NET haga el lanzamiento por usted.

Lo primero que debe cambiar son sus llamadas a StreamWriter y StreamReader para envolverlas en una declaración de uso, como esta:

using (StreamReader reader = file.OpenText())

   List text = new List();
   while (!reader.EndOfStream)
   
      text.Add(reader.ReadLine());
   

Esto se encargará de llamar a Close y Dispose por usted y, de hecho, lo envolverá en un bloque de prueba / finalmente para que el código compilado real se vea así:

StreamReader reader = file.OpenText();
try

   List text = new List();
   while (!reader.EndOfStream)
   
      text.Add(reader.ReadLine());
   

finally

   if (reader != null)
      ((IDisposable)reader).Dispose();

El beneficio aquí es que se asegura de que la transmisión se cierre incluso si se produce una excepción.

En cuanto al manejo de excepciones más explícito, realmente depende de lo que desee que suceda. En su ejemplo, prueba explícitamente si el archivo existe y lanza una FileNotFoundException que puede ser suficiente para sus usuarios, pero puede que no.

Sección de Reseñas y Valoraciones

Si piensas que te ha resultado de utilidad este post, te agradeceríamos que lo compartas con otros seniors de este modo nos ayudas a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *