Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

1

11.11.2008, 17:02

throw in klassen

hi wie schaff ich es throw im konstruktor zu benutzen
z.b.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
Game::Game : 
    //....
{

//....
if (!status){
        Error error;
        char buffer[512];
        sprintf(buffer,"No such file or directory: %s \n",filename);
        P_SETGAMEERROR(error,this,buffer);
        throw error;
    }
}

fehler meldung:
Unbehandelte Ausnahme bei 0x7c812aeb in test.exe: Microsoft C++-Ausnahme: Error an Speicherposition 0x0011c188..

wenn ich das throw wegmachen kommt keine fehler

2

11.11.2008, 17:07

Das kann doch nicht dein Ernst sein? :roll:

3

11.11.2008, 17:16

Hmm was ist das Gegenteil von werfen? na? ;)

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

4

11.11.2008, 17:23

ich dummerchen hab das try in der main vergessen :oops:

aber muss man es wirklich auffangen?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

11.11.2008, 17:49

Ich habe mir sagen lassen, dass throws in Konstruktoren zwar möglich, aber nicht wünschenswert sind ;) . Bemühe mal die Suchmaschine deiner Wahl zu dem Thema.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

6

11.11.2008, 17:57

Zitat von »"kiba"«

aber muss man es wirklich auffangen?


http://www.cpp-tutor.de/cpp/le16/le16_02.htm#sonstiges

7

11.11.2008, 18:10

Zitat von »"Nox"«

Ich habe mir sagen lassen, dass throws in Konstruktoren zwar möglich, aber nicht wünschenswert sind ;).
Wieso nicht? Ein Vorteil von Exceptions gegenüber C-Fehlerabfragen besteht ja darin, dass von überall Fehler direkt gemeldet werden können.

Wie will man sonst dem Aufrufer mitteilen, dass die Konstruktion schiefgelaufen ist? Eine Zombie-Instanz hinterlassen? ;)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

11.11.2008, 18:24

Zitat

Der Destruktor eines Objekts wird nur dann aufgerufen, wenn der Konstruktor vollständig, und damit fehlerfrei, ausgeführt wurde!


Besser ne Zombieklasse als nen Speicherwrack :lol: . Na, hängt natürlich immer von der Situation ab. Ich gehöre ja zu der Fraktion "bei exception ist der Name Programm". Sprich es sollte eine Ausnahme sein und nicht als Rückgabewert missbraucht werden. Aber das ist nur meine eigene Meinung und keinesfalls allgemeingültig.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

9

11.11.2008, 18:26

Mal ne allgemeine Frage: Wann sollte ich Exeptions benutzen und wann return-werte ?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

11.11.2008, 18:55

Mal ne allgemeine Antwort: Dazu wird dir wohl jeder ne andere Antwort geben bzw. gibt es da "zwei Lager". Die einen sagen, dass man (salopp ausgedrückt) Exceptions als Returnanweisungen nutzen darf und sollte. Die anderen behaupten, dass Exceptions echt nur für Ausnahmen sind (also nicht für so Sachen wie "Datei konnte nicht geladen werden", sondern für Sachen wie "3+5 muss gleich 8 sein und nicht -321442" oder "verdammt nochmal heute braucht man halt für nen Notepad 512MB Ram, also kauf dir welchen, weil dein Speicher voll ist" aka "Memory exception").
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige