Warnungen mit der Syntax e abschalten oder verhindern
-
Hi @ All!
Bei einem meiner Programme die gerade schreibe kommt wenn ich mit try{} und
catch (FormatException ^e) {} eine Warnung die irgendetwas mit der Sysntax e zu tun hat.Kann man das irgendwie verhindern oder abschalten?
Gruß
The Smart
-
Irgendeine Warnung mit der "Syntax e" ist nicht wirklich berauschend als Information.
Ich rate mal, das es sich bei der Warnung um ein "Variable nicht verwendet" handelt. Lass das e weg, wenn Du es nicht verwendest und die Warnung erledigt sich. Für Details drücke mal F1 bei der Warnung oder gib konkrete Meldungen an.
-
Warscheinlich ist es eine Warnung, weil die Variable e nicht weiter verwendet wird.
Ich definere deshalb im catch-Block eine Dummy-Variable vom Typ String:
String ^sMessages = e->Message;
und die Warning ist verschwunden.
-
Du ersetzt also eine unbenutzte Variable durch eine neue unbenutzte Variable ^^
Denk noch mal über den Sinn des Vorgehens nach.
-
also für alle dies genau haben wollen:
warning C4101: 'e': Unreferenzierte lokale Variable
@taraneas : ich versuchs ma und sag dann obs geklappt hat
Gruß
The Smart
-
Hast Du die Lösung von Knuddelbaer nicht gelesen?
IMO ist der Vorschlag von taraneas keine Lösung, sonder einfach ein Hack.Simon
-
Lass die Warnung stehen. Berrechtigt ist sie ja. Macht aber auch nichts kaputt.
-
Das was Knuddlbaer geschrieben hat bringt mich auch nicht weiter da die catch funktion eine fehlfunktion abfangen soll und das machts nicht ohne FormatException ^e .
-
Man man man....
[wer mich kennt möge sich jetzt die paar Zeilen denken die hier normal stehen]try { // blösinn } catch (Exception^) { }
-
War mir auch klar, dass das keinen Mehrwert hat, aber es funktioniert.
Leider kam ich selber nicht auf die Idee, einfach die Definition wegzulassen. Aber dank deines Hinweises kann ich es in Zukunft besser lösen.
-
habs jetzt ma ohne des e ausprobiert und es hat funktioniert!
Sorry Knuddlbaer , aber ich hab des echt net gewusst das man das e einfach weglassen darf, denn in meinem Visual C++ buch von Dirk Luis steht es nur mit dem e drinnen.
Gruß
The Smart
P.S: Thema kann geschlossen werden!
Danke an alle die hier mitgeholfen haben,
besonderer Danke gilt hierbei Knuddlbaer!
-
Hallo the Smart,
besonders viel Sinn macht das aber nicht was Du da schreibst und was Dir da vorgeschlagen wird.
Wann benutzt man einen try und catch Block?
Wenn man Fehler abfangen möchte.
Wenn ich mir sicher bin, dass in diesem Codeabschnitt keinen Fehler auflaufen kann, lasse ich den try-catch Block einfach weg.
Aber ich lass auf sicher nicht die Meldung in den catch-Block laufen ohne sie zu behandeln.Guck mal hier...
http://www.rb-softarticle.com/try-catch Block.aspx
try { //Anweisung } catch(Execption1 e) { MessageBox::Show(e->Message); }
Gruß, Doug_HH
-
besonders viel Sinn macht das aber nicht was Du da schreibst und was Dir da vorgeschlagen wird.
Aber ich lass auf sicher nicht die Meldung in den catch-Block laufen ohne sie zu behandeln.
Bei dem Satz muss man raten. Ich rate mal, dass Du meinst, das man den Catchblock weg lassen soll. Das hat niemand behauptet.
Meinst Du, das man die e->Message immer ausgeben ("behandeln") soll, steht Dir in Sachen Exeptionhandling noch ein wenig Arbeit bevor.
Und Dein hier geposteter Beispielcode ist falsch, da fehlt ein ^
-
Hallo
Doug_HH schrieb:
Wenn ich mir sicher bin, dass in diesem Codeabschnitt keinen Fehler auflaufen kann, lasse ich den try-catch Block einfach weg.
Das würde ich so nicht unterschreiben...
chrische
-
noch einfacher man schreibt
try{ //Alles mögliche } catch(...){ //allgemeine meldung }
-
aber wenn die exception "FormatException" nicht in den allgemeinen block fliegen soll ??
try { // irgendwas } catch(FormatException^) { // erstmal nichts machen } catch(NullReferenceException^ ex) { // keine referenz - message ex ausgeben } catch(...) { // nicht abgefangene errors behandeln }
-
chrische5 schrieb:
Das würde ich so nicht unterschreiben...
Wie meinst Du das? Wie Unterschreiben?
Ich meine so einen Codeabschnitt
try { checkBox1->Checked = true; } catch(Exception^ ex) { MessageBox::Show(ex->Message); }
Würdes Du das Unterschreiben?!
Würde das Sinn machen?
@Knuddlbaer: Jo hatte das ^ vergessen, hatte das eben so schnell im Editor geschrieben.
Gruß
-
Hallo
Naja mit dem sicher sein, ist das so eine Sache. Es heißt ja nicht umsonst Ausnahme. Aber du hast natürlich recht, dass dein Beispiel wirklich von einer anderen Welt ist. Ich wollte nur darauf hindeuten, dass man es nicht zu oft weglassen sollte.
chrische
-
try { checkBox1->Checked = true; } catch(Exception^ ex) { MessageBox::Show(ex->Message); }
An der Stelle kann z.B. eine NullReferenceException oder eine ObectDisposedException, und eine Exception wegen Threadübergreifenden Vorgang fliegen. Es gibt durchaus Situationen, in dem dieser Quellcode Sinn macht.
-
Hallo
Da war ich wohl zu früh
Ich habe es aber noch nie so geschrieben.
chrische