Benutzer mit den meisten Antworten
Try Catch Fehler in Logdatei oder Messagebox ausgeben

Frage
-
Hallo, ich habe eine try catch anweisung und möchte bi einem möglichen Fehlerfall den Fehler in eine Logdatei schreiben und in einer Messagebox wiedereben. im moment steht bei mir nur ein throw in der catch anweisung und der debugger springt dan dort hin. wie bekomme ich denn den Text der dann bei throw als Fehler angezeigt wird in die Messagebox?
Antworten
-
Hallo,
also erstens habe ich dir da eben einen falschen Link gegeben :) hier der Link zu dem C# Teil
Und zu deiner Frage, du kannst einfach nach der "Exception" catchen also
try{
...
}catch(Exception ex){
MessageBox.Show(ex.Message);
}
Nun wird wirklich jede Exception abgefangen, die in dem Try Block ausgelößt wird.
MfG, Sebastian Gross- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 20. Oktober 2010 08:41
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 21. Oktober 2010 07:55
-
Bekomme ich auch irgendwo gesagt, welche Exception was macht?
Also ich haben jetzt die FileNotFoundException benutzt um rauszufinden ob die zu öffnende Datei existiert.
Allerdings funktioniert das nicht, wenn ich ein Falschs Verzeichnis eingebe.
da bekomme ich vom Debugger immer die Meldung:
"Ein Teil des Pfades "C:\Dokumente und Einstellungen\Benny\Eigense Dateien\Visual Studio 2008\Projects\Arnold PLC modus activation program\Arnold PLC modus activation program\bin\Release\activation.xml" konnte nicht gefunden werden."
kann mir jemand sagen, wie ich disen Fehler abfangen kann?
Hallo Bensen,
Du kannst auch mehrer Exceptions abfangen:
try { StreamReader sr = File.OpenText( "C:\\Temp\\Test.txt" ); string s = sr.ReadToEnd(); sr.Close(); MessageBox.Show( s ); } catch (OutOfMemoryException ex) { MessageBox.Show( "Nicht genug Speicher, um die Datei vollständig zu lesen." ); } catch (FileNotFoundException ex) { MessageBox.Show( "Die Datei wurde nicht gefunden." ); } catch (UnauthorizedAccessException ex) { MessageBox.Show( "Keine Zugriffsberechtigung" ); } catch (Exception ex) { MessageBox.Show( "Sonstiger Fehler: " + ex.Message ); }
Wichtig hierbei ist, dass Du den catch-Teil für eine (Basis-)Exception ans Ende stellst. Denn jede andere Exception ist von dieser Klasse abgeleitet, im Sinne von "is a" ist also jede abgeleitete Exception eine Basis-Exception. Wenn diese dann mittels eines catch-Blocks abgefangen wird, können andere catch-Blöcke sie nicht mehr fangen. Genauen Aufschluss über die Vererbungshierarchie von Exceptions gibt Dir die MSDN-Library.Welche Exceptions die von Dir benutzten Methoden werfen KÖNNEN, steht meist in der Doku. (Im Fall von File.Open sind es noch einige mehr.)
HTH
Gruß
Batty- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 20. Oktober 2010 08:40
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 21. Oktober 2010 07:55
Alle Antworten
-
Hallo,
du solltest wirklich ein Buch lesen wo die Grundlagen erklärt werden. Schau dir dieses Kapitel des Openbooks zu VB 2010 an dort wird die Fehlerbehandlung genau erklärt.
http://openbook.galileocomputing.de/einstieg_vb_2010/einstieg_vb_2010_kap_03_003.htm
MfG, Sebastian Gross -
Bekomme ich auch irgendwo gesagt, welche Exception was macht?
Also ich haben jetzt die FileNotFoundException benutzt um rauszufinden ob die zu öffnende Datei existiert.
Allerdings funktioniert das nicht, wenn ich ein Falschs Verzeichnis eingebe.
da bekomme ich vom Debugger immer die Meldung:
"Ein Teil des Pfades "C:\Dokumente und Einstellungen\Benny\Eigense Dateien\Visual Studio 2008\Projects\Arnold PLC modus activation program\Arnold PLC modus activation program\bin\Release\activation.xml" konnte nicht gefunden werden."
kann mir jemand sagen, wie ich disen Fehler abfangen kann?
-
Hallo,
also erstens habe ich dir da eben einen falschen Link gegeben :) hier der Link zu dem C# Teil
Und zu deiner Frage, du kannst einfach nach der "Exception" catchen also
try{
...
}catch(Exception ex){
MessageBox.Show(ex.Message);
}
Nun wird wirklich jede Exception abgefangen, die in dem Try Block ausgelößt wird.
MfG, Sebastian Gross- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 20. Oktober 2010 08:41
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 21. Oktober 2010 07:55
-
Bekomme ich auch irgendwo gesagt, welche Exception was macht?
Also ich haben jetzt die FileNotFoundException benutzt um rauszufinden ob die zu öffnende Datei existiert.
Allerdings funktioniert das nicht, wenn ich ein Falschs Verzeichnis eingebe.
da bekomme ich vom Debugger immer die Meldung:
"Ein Teil des Pfades "C:\Dokumente und Einstellungen\Benny\Eigense Dateien\Visual Studio 2008\Projects\Arnold PLC modus activation program\Arnold PLC modus activation program\bin\Release\activation.xml" konnte nicht gefunden werden."
kann mir jemand sagen, wie ich disen Fehler abfangen kann?
Hallo Bensen,
Du kannst auch mehrer Exceptions abfangen:
try { StreamReader sr = File.OpenText( "C:\\Temp\\Test.txt" ); string s = sr.ReadToEnd(); sr.Close(); MessageBox.Show( s ); } catch (OutOfMemoryException ex) { MessageBox.Show( "Nicht genug Speicher, um die Datei vollständig zu lesen." ); } catch (FileNotFoundException ex) { MessageBox.Show( "Die Datei wurde nicht gefunden." ); } catch (UnauthorizedAccessException ex) { MessageBox.Show( "Keine Zugriffsberechtigung" ); } catch (Exception ex) { MessageBox.Show( "Sonstiger Fehler: " + ex.Message ); }
Wichtig hierbei ist, dass Du den catch-Teil für eine (Basis-)Exception ans Ende stellst. Denn jede andere Exception ist von dieser Klasse abgeleitet, im Sinne von "is a" ist also jede abgeleitete Exception eine Basis-Exception. Wenn diese dann mittels eines catch-Blocks abgefangen wird, können andere catch-Blöcke sie nicht mehr fangen. Genauen Aufschluss über die Vererbungshierarchie von Exceptions gibt Dir die MSDN-Library.Welche Exceptions die von Dir benutzten Methoden werfen KÖNNEN, steht meist in der Doku. (Im Fall von File.Open sind es noch einige mehr.)
HTH
Gruß
Batty- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 20. Oktober 2010 08:40
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 21. Oktober 2010 07:55