ich den folgenden Code haben:Essen Ausnahme oder überprüfen Sie Null?
private async Task <string>IsolatedStorageReadTextFile(string uFileName)
{
string sRet = "";
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(uFileName);
if (file != null)
{
using (var inputStream = await file.OpenReadAsync())
using (var classicStream = inputStream.AsStreamForRead())
using (var streamReader = new StreamReader(classicStream))
{
while (streamReader.Peek() >= 0)
{
sRet = streamReader.ReadLine();
}
}
}
return sRet;
}
Wenn die betreffende Datei nicht existiert, führt die IDE einen Fehler:
Sollte ich
1) lassen die IDE debug warner ignoriert diesen Fehler (sagen Sie "Brechen Sie nicht bei dieser Ausnahme"), und ich sollte einfach "if (file! = Null)" den Job
machen lassen2) oder sollte ich prüfen, ob die Datei tatsächlich existiert
3) Try-Catch verwenden?
Ich hatte einen wichtigen Teil des Code hinzuzufügen nach den Antworten:
private async Task <bool> LocalExists(string uFileName)
{
bool b = false;
//https://stackoverflow.com/questions/8626018/how-to-check-if-file-exists-in-a-windows-store-app
try
{
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(uFileName);
b = (file != null);
}
catch (Exception ex)
{
b = false;
}
return b;
}
Dies wirft die gleiche Ausnahme, da in UWP, dort Zugang tatsächlich zu überprüfen, ob eine Datei existiert keine andere Möglichkeit scheint, als zu versuchen es:
How to check if file exists in a Windows Store App?
So bleibt die Frage.
niemals Ausnahmen verwenden, um die Strömung des Codes zu fahren. Ein File.Exists vor dem Anruf wird eine Menge Ärger vermeiden. (nicht 100% sicher, aber immer noch ....) – Steve