Entwickler-Ecke
C# - Die Sprache - Eine Frage zu try und catch
Phelios - Sa 14.01.12 15:15
Titel: Eine Frage zu try und catch
Hallo Leute ...
Ist vielleicht ne blöde Frage.
Es geht um try und catch ...
Also ...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| try { } catch(Exception ex) { Messagebox.Show("bla bla"); } |
Okay, aber wo, zum Geier holt der das "ex" in der catch-Klammer her? :D
Ich kriege ständig ne Warnung, weil eine Variable deklariert wurde,
aber nie benutzt wird.
Ich hab das aber schon in vielen Quelltexten gesehen.
Wäre schön, wenn mich da mal jemand aufklären würde, dass ich auch
in diesem Punkt den Durchblick habe.
Vielleicht mache ich auch etwas falsch, oder habe was übersehen.
Danke im Voraus für Eure Antworten.
Moderiert von
Th69: Topic aus WinForms verschoben am Sa 14.01.2012 um 14:32
Th69 - Sa 14.01.12 15:36
Hallo Phelios,
entweder den Variablennamen weglassen oder aber natürlich noch besser die Exception auch ausgeben, z.B. mittels
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| try { } catch(Exception ex) { Messagebox.Show(ex); } |
Ich weiß jetzt aber nicht, was genau du mit
Phelios hat folgendes geschrieben: |
Okay, aber wo, zum Geier holt der das "ex" in der catch-Klammer her? |
meinst?
Den Variablennamen darfst du frei bestimmen, es hat sich halt nur 'ex' eingebürgert.
Phelios - Sa 14.01.12 16:06
Th69 hat folgendes geschrieben : |
Hallo Phelios, |
Hallöchen.
Th69 hat folgendes geschrieben: |
Ich weiß jetzt aber nicht, was genau du mit Phelios hat folgendes geschrieben: | Okay, aber wo, zum Geier holt der das "ex" in der catch-Klammer her? | meinst?
Den Variablennamen darfst du frei bestimmen, es hat sich halt nur 'ex' eingebürgert.
|
Ja, das ist mir schon klar, aber diese Variable muss doch einen Sinn haben,
sonst würde mich C# noch nicht mit einer Warung nerven.
Es ist sicher kein gravierender Fehler, aber irgendetwas mache ich falsch.
Ich meine, irgendetwas muss doch mit "ex" gemacht werden.
Oder sehe ich das falsch??? :?:
Ralf Jansen - Sa 14.01.12 16:21
Zitat: |
Oder sehe ich das falsch??? |
Nein das siehst du eigentlich richtig. Ex solltest du eigentlich genauer auswerten. Entweder in dem du einen genaueren Typ als Exception bei catch angibst oder dir andere Details der Exception ansiehst und daraus ableitest was denn genaue zu tun ist. Irgendwas anzeigen und dann einfach das Programm weiterlaufen lassen ist fast immer falsch!
Nur wenn du genau weißt das Exceptions in einem Codeblock egal sind kannst du Ex weglassen (und einfach catch(Exception) ohne Ex schreiben).
Zitat: |
sonst würde mich C# noch nicht mit einer Warung nerven. |
Der Compiler warnt dich immer wenn du ein Variable definierst aber dann nicht benutzt. Die Exception des catch Blocks macht da keine Ausnahme. Ist ja auch verständlich das der Compiler das für verdächtig hält das der Programmierer vor dem Bildschirm was definiert aber dann ignoriert.
Phelios - Sa 14.01.12 19:25
Hallo nochmal ...
Also ich hab mal so ein bisschen rum gespielt.
Auf die Idee muss man erst mal kommen, dass man einfach eine Variable
deklarieren kann, sie zwischen 2 Klammern packen, und dann wird sie
benutzt, denn das ist doch hier keine Parameter-Übergabe.
Ich bin dahinter gekommen, nachdem ich in einen von meinen C# -Büchern
nachgeschlagen habe, denn ich habe so etwas vorher gar nicht gefunden
Ich hab also folgendes gemacht :
C#-Quelltext
1: 2: 3: 4:
| catch(Exception ex) { MessageBox.Show("Es ist ein Fehler aufgetreten \n" + ex.Message); } |
... Und die Warnung ist verschwunden.
Ich vermute, das "ex" ist ein Index auf Fehlermeldungen, die wahrscheinlich
auf ein String Array zurückzuführen ist.
Ich werde jetzt mal bewusst einige unterschiedliche Exceptions auslösen, und mal sehn,
was die MessageBox zu sagen hat.
Aber egal, das Problem ist gelöst, aber es hat sich wohl gelohnt, dass ich hier
mit jemanden geredet habe, sonst hätte ich es wahrscheinlich nicht gefunden.
ICH DANKE DIR
daeve - So 15.01.12 20:46
Also das was du meinst ist glaube ich einfach wie und was in das ex. kommt ?
Das ist nichts anderes als die "genaue" Ausnahmemeldung, je nach Ausnahme halt eine andere und die wird generiert sobald eine Ausnahme im try block auftritt.
lothi - Sa 21.01.12 13:00
Phelios hat folgendes geschrieben : |
Hallo nochmal ...
... Und die Warnung ist verschwunden.
Ich vermute, das "ex" ist ein Index auf Fehlermeldungen, die wahrscheinlich
auf ein String Array zurückzuführen ist.
Ich werde jetzt mal bewusst einige unterschiedliche Exceptions auslösen, und mal sehn,
was die MessageBox zu sagen hat.
Aber egal, das Problem ist gelöst, aber es hat sich wohl gelohnt, dass ich hier
mit jemanden geredet habe, sonst hätte ich es wahrscheinlich nicht gefunden.
ICH DANKE DIR |
Hallo
1. Die Warnung hat nichts mit der Exception zu tun. Die Meldung kommt weil der Compiler Schalter /warn:4 eingestellt ist. Du kannst das Projekt kompilieren aber es wird dich darauf aufmerksam gemacht, dass du eine Variable zwar deklariert, aber nicht benutzt hast.
Diese Warnung kommt in jeder Methode. Die IDE-VS zeigt dir das einfach direkt an. Wenn du das Projekt über die csc.exe erstellst, bekommst du die Meldung erst beim Erstellen deines Projektes. Du kannst die Warnstufe (/warnaserror) noch höher einstellen, so dass du auch bei Warnungen dein Projekt nicht kompilieren kannst.
2. Exception ist eine Klasse und hat niggs mit einem String Array oder mit Zauberei oder Wahrscheinlichkeiten zu tun:
http://msdn.microsoft.com/de-de/library/system.exception.aspx
3. Es ist nicht egal wenn man das Vorgehen beim Error-Handling nicht versteht. Es ist sehr wichtig bei einer Softwareentwicklung das Error-Handling korrekt zu implementieren. In den Büchern und Tutorials, wird das aus Platzgründen meisten wegelassen, aber in einem Projekt muss darf man das nicht einfach so weglassen.
Gruss Lothi
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!