Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: MFC (Visual C++) ::  CException wird nicht geworfen??     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
ronnie.b
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.12.2006
Beiträge: 24
Beitrag ronnie.b Mitglied 14:53:40 09.02.2010   Titel:   CException wird nicht geworfen??            Zitieren

Hallo,
hier mal ein Beispielcode:

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try
{
int a,b,c;
a = 1;
b=1;
b--;
c = a/b
}
catch(CException* e)
{
    e->ReportError();
    e->Delete();
}
catch(...)
{
    MessageBox("Ausnahme");
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try
{
int a,b,c;
a = 1;
b=1;
b--;
c = a/b
}
catch(CException* e)
{
e->ReportError();
e->Delete();
}
catch(...)
{
MessageBox("Ausnahme");
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try
{
int a,b,c;
a = 1;
b=1;
b--;
c = a/b
}
catch(CException* e)
{
    e->ReportError();
    e->Delete();
}
catch(...)
{
    MessageBox("Ausnahme");
}


Warum wird hier jetzt nicht der Catch-Block mit der "CException" sondern der Allgemeine (...) aufgerufen??
Versteh ich irgendwie nicht.
SideWinder
Moderator

Benutzerprofil
Anmeldungsdatum: 19.10.2001
Beiträge: 18195
Beitrag SideWinder Moderator 15:07:54 09.02.2010   Titel:              Zitieren

Wird wohl kein Pointer auf die Exception geworfen. Probiers mal mit CException& (Referenz)

MfG SideWinder

_________________
http://www.dilbert.com/2009-06-11/
http://www.dilbert.com/2009-06-14/
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13147
Beitrag Martin Richter Moderator 15:13:11 09.02.2010   Titel:              Zitieren

Eine Division durch 0 ist keine CException.
Division durch 0 erzeugt eine SEH Exception!

SEH Exceptions und C++ Exceptions unterscheiden sich gravierend! Siehe MSDN wie immer...

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
ronnie.b
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.12.2006
Beiträge: 24
Beitrag ronnie.b Mitglied 15:48:26 09.02.2010   Titel:              Zitieren

Hallo,
erstmal danke für die Antworten.
Ohne das ich jetzt die MSDN durchsuchen muss :-), gibt es auch die Möglichkeit diese Ausnahmen abzufangen bzw. wie krieg ich in meinem Catch(...) raus welche Exception ausgelöst wurde??

Gruß
Ronnie
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13147
Beitrag Martin Richter Moderator 20:32:55 09.02.2010   Titel:              Zitieren

Dann fang hier an zu lesen:
http://msdn.microsoft.com/en-us/library/aa984821(VS.71).aspx

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 12748
Beitrag hustbaer Mitglied 21:41:31 09.02.2010   Titel:              Zitieren

ronnie.b schrieb:
bzw. wie krieg ich in meinem Catch(...) raus welche Exception ausgelöst wurde??

Naja, das ist schwierig. Dazu müsstest du C++ lernen. *hihi*

Möglichkeit 1: mehrere catch() Handler schreiben für verschiedene Exception-Typen
Möglichkeit 2: RTTI (typeid/type_info)

_________________
"Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/


Zuletzt bearbeitet von hustbaer am 21:45:08 09.02.2010, insgesamt 1-mal bearbeitet
FFC
Unregistrierter




Beitrag FFC Unregistrierter 05:09:29 10.02.2010   Titel:              Zitieren

ronnie.b schrieb:
gibt es auch die Möglichkeit diese Ausnahmen abzufangen ... ?
Es gibt die Möglichkeit fehlerfreien code zu schreiben - meine bevorzugte Methode.
ronnie.b
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.12.2006
Beiträge: 24
Beitrag ronnie.b Mitglied 08:04:09 10.02.2010   Titel:              Zitieren

FFC schrieb:
Es gibt die Möglichkeit fehlerfreien code zu schreiben - meine bevorzugte Methode.


Sehr kompetente Antwort.....
Irgendwie hab ich in diesem Forum immer das Gefühl, dass man hier mit Fragen allen auf die Nerven geht.

@Martin + hustbaer:
Danke für die Antworten und den Link


Zuletzt bearbeitet von ronnie.b am 08:05:32 10.02.2010, insgesamt 2-mal bearbeitet
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13147
Beitrag Martin Richter Moderator 09:04:41 10.02.2010   Titel:              Zitieren

ronnie.b schrieb:
FFC schrieb:
Es gibt die Möglichkeit fehlerfreien code zu schreiben - meine bevorzugte Methode.


Sehr kompetente Antwort.....
Irgendwie hab ich in diesem Forum immer das Gefühl, dass man hier mit Fragen allen auf die Nerven geht.


Warum! Ich finde die Antwort ist vernünftig... Denn Deine Frage zielte ja auf SEH Exceptions. C++ Exceptions gehören sicherlich zum Design einer Software.

Wenn es um SEH Exceptions geht, wie zum Bespiel auch ungültige Speicherzugriffe etc. dann hat Dein Programm hier wirklich nichts zu machen. Warum auch?
Solche Fehler sind Programmiererfehler wenn Sie auftreten.
In solch einen Fall sollte Dein Programm crashen und netter Weise für den Entwickler einen Dump hinterlassen... :cool:

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
ronnie.b
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.12.2006
Beiträge: 24
Beitrag ronnie.b Mitglied 08:06:19 11.02.2010   Titel:              Zitieren

Hallo Martin,
das dies ein Programmiererfehler ist erscheint auch mir als Noob klar :-)
War ja auch nur ein Beispiel und ich wollte ja einfach nur wissen was da passiert.
Auf eine Frage zu Antworten "Es gibt die Möglichkeit fehlerfreien code zu schreiben..." ist ja wohl nicht sehr kompetent. Selbs mir ist klar das es diese Möglichkeit gibt. Ich wage aber zu behaupten, dass es keinen fehlerfreien Code gibt wenn man mal "Hello World" außen vor lässt :D . Oder :confused:
C/C++ Forum :: MFC (Visual C++) ::  CException wird nicht geworfen??   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.