Welch Type wirft throw "irgendwas"; ?
-
Hallo allerseits,
ich habe da eine paar Klassen bekommen die mitthrow "Fehlertext";
nach mir werfen. Ich wollte die Dinger jetzt mit catch(char* msg) auffangen, aber sie knallen immer gegen meinen Exception-Helm (catch(...))!
Wenn ich die fremden Klassen aufthrow (char*) "Fehlertext";
ändere geht es!
Welchen Type muss ich den da fangen???
Vielen Dank!
PeanutPS: OS: FreeBSD CC: gcc32 Zustand: Müde
-
das kommt davon, wenn man const-correctness nicht versteht (oder zu müde ist ;))
#include <iostream> using namespace std; int main() { try { throw "const"; } catch(const char *str) { cerr << str << endl; } catch(...) { cerr << "hmm" << endl; } }
-
Hallo,
für alle die sich fragen, warum man zwar:char* p = "Hallo";
schreiben kann, ein "Hallo" sich aber nicht mit einem catch(char*) sondern ausschließlich mit einem catch(const char*) fangen lässt.
Das liegt daran, dass für Stringliterale die in einem throw-Ausdruck auftauchen, *niemals* die spezielle (und als deprecated eingestufte) Konvertierung von array-of-const-char (der Typ eines Stringliterals) nach char-pointer berücksichtig wird.
In diesem Punkt unterscheidet sich z.B. ein normaler Funktionsaufruf von einem throw-Ausdruck.[ Dieser Beitrag wurde am 13.06.2003 um 00:08 Uhr von HumeSikkins editiert. ]
-
Viiiiiiieeeeeeeeeelen Dank!
Ihr glaubt ja nicht wie viele FALSCHE Beispiele im Netz liegen! Googelt mal 'throw "catch(char'... und sowas nennt sich dann Tutorial...So, Prob. gefixed ( naja, fixen lassen
), Zeit für die Heia!
-
Gibt es eigentlich einen bestimmten Grund dass Referenzen so selten const gefangen werden?
-
Kann mir mal jemand erklären was genau man mit throew und catch und try machen kann? Das is total neu für mich.
-
stell dich nicht so dumm an, und lies ein buch :p :p