2016-05-04 7 views
-5

Dieser Code funktioniert einwandfrei. Keine Probleme damit.C# in Datei schreiben versuchen Fänge

Das Problem ist, dass ich einen Versuch Catch Block um ihn setzen möchte. Das ist, was ich mir ausgedacht habe. Kann irgendjemand mehr Fänge vorschlagen? Oder ist es in Ordnung, wie es ist?

String strFileLine1 = "This is a folder that will be used by the Virtual Flashcard program."; 
String strFileLine2 = "Please do not delete."; 
String myFilePath; 
. 
. 
. 
SaveFileDialog saveFile = new SaveFileDialog(); 
saveFile.FileName = "FlashCard.txt"; 
saveFile.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
saveFile.ShowDialog(); 

myFilePath = Path.GetDirectoryName(saveFile.FileName); 
label2.Text = myFilePath; 

try 
{ 
    using (StreamWriter fileWrite = new StreamWriter(saveFile.FileName)) 
    { 
     fileWrite.WriteLine(strFileLine1); 
     fileWrite.WriteLine(strFileLine2); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show("There is a problem"); 
} 
+2

Was meinst du mit „mehr Fänge“? Und warum sollten Sie eine Ausnahme in Betracht ziehen, wenn Sie sie einfach ignorieren? – David

+1

Wenn Sie die Seite [MSDN] (https://msdn.microsoft.com/en-us/library/7ack4zyt (v = vs.110) .aspx) überprüfen, werden Sie sehen, dass 'WriteLine' ObjectDisposedException und IOException auslöst. –

Antwort

2

Um diese Diskussion abzuschließen. Von @Erresen: "Sie erfassen derzeit ALLE Ausnahmen mit Ihrem aktuellen Fang."

Dies ist in Ordnung, wenn Sie aufgrund der spezifischen Ausnahme, die empfangen wird, nicht etwas Bestimmtes tun möchten/müssen.

Wie jedoch @Johny Mopp erwähnt, sind ObjectDisposedException und IOException mögliche Ausnahmen. Wenn Sie eine IOException haben, möchten Sie möglicherweise eine Warnung erstellen und den Benutzer darüber informieren, dass die Methode nicht auf die Datei zugreifen konnte, sie blockiert wurde, oder einen Moment warten, um die Datei erneut zu versuchen. Bei ObjectDisposedException besteht die einzige Möglichkeit jedoch darin, den Benutzer darüber zu informieren, dass die Aktion nicht möglich ist. Daher sollten Sie die Ausnahmen einzeln abfangen und entsprechend behandeln.

0

Danke für diejenigen, die konstruktive Kritik und Hilfe gegeben haben. Um die anderen ....

Hier ist der Code, den ich mit

kam
SaveFileDialog saveFile = new SaveFileDialog(); 
saveFile.FileName = "FlashCard.txt"; 
saveFile.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
saveFile.ShowDialog(); 

myFilePath = Path.GetDirectoryName(saveFile.FileName); 
label2.Text = myFilePath; 

try 
{ 
    using (StreamWriter fileWrite = new StreamWriter(saveFile.FileName)) 
    { 
     fileWrite.WriteLine(pushUp.StrFileLine1); 
     fileWrite.WriteLine(pushUp.StrFileLine2); 
    } 
} 
catch (IOException ex) 
{ 
    MessageBox.Show(pushUp.StrIOExcepion); 
} 
catch (ObjectDisposedException ex) 
{ 
    MessageBox.Show(pushUp.StrObjectDisposedException); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(pushUp.StrException); 
} 
+0

Der letzte Catch, 'catch (Exception ex) {...}', kann unnötig sein. Der MSDN-Artikel, mit dem @Johnny Mopp verknüpft ist, besagt, dass die einzigen Ausnahmen die ersten beiden sind. Und wenn Sie sich nicht irren, sollten Sie ein 'finally' hinzufügen, um die Datei zu schließen, wenn sie geöffnet wurde: http://www.java2s.com/Code/CSharp/File-Stream/TryandcatchexceptionsforStreamWriter.htm – Machtyn