Comment bien gérer les exceptions lors de l'exécution d'e / s de fichier

Souvent, je me trouve en interaction avec les fichiers d'une certaine façon, mais après avoir écrit le code, je suis toujours pas sûr de savoir comment rubust il est réellement. Le problème est que je ne suis pas entièrement sûr de savoir comment fichier les opérations connexes peuvent échouer et, par conséquent, la meilleure façon de gérer expections.

La solution la plus simple semble être de prendre toute IOExceptions jeté par le code et donner à l'utilisateur une "Inaccessible fichier" message d'erreur mais est-il possible d'obtenir un peu plus fine des messages d'erreur. Est-il un moyen de déterminer la différence entre les erreurs telles qu'un fichier verrouillé par un autre programme et les données illisibles en raison d'une erreur matérielle?

Donné le code C# suivant, comment voulez-vous gérer les erreurs dans un convivial (aussi informatif que possible)?

public class IO
{
public List<string> ReadFile(string path)
{
FileInfo file = new FileInfo(path);
if (!file.Exists)
{
throw new FileNotFoundException();
}
StreamReader reader = file.OpenText();
List<string> text = new List<string>();
while (!reader.EndOfStream)
{
text.Add(reader.ReadLine());
}
reader.Close();
reader.Dispose();
return text;
}
public void WriteFile(List<string> text, string path)
{
FileInfo file = new FileInfo(path);
if (!file.Exists)
{
throw new FileNotFoundException();
}
StreamWriter writer = file.CreateText();
foreach(string line in text)
{
writer.WriteLine(line);
}
writer.Flush();
writer.Close();
writer.Dispose();
}
}
Attraper IOException est pas tout à fait suffisant. Des méthodes comme OpenText peut lancer d'autres exceptions comme UnauthorizedAccessException et ArgumentException.

OriginalL'auteur Morten Christiansen | 2008-09-17

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *