JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=c3c57a7bf5a1187bbcb607b637ad23e9Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Problem mit Try Catch

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 11.09.2006, 18:14    Titel: Problem mit Try Catch Antworten mit Zitat

Hi ich habe folgenden Codeblock

CPP:
try
{
   VB_Object->VertexBuffer->Release();
         
   // VertexBuffer und vertexbufferobjekt löschen
   delete VB_Object->VertexBuffer;
   delete VB_Object;
}
catch( const std::exception &e )
{
}


VB_Object ist eine von mir geschriebene Klasse
VertexBuffer ist ein Direct3D Vertexbuffer


Nun zu meinem Problem:

Von C# bin ich gewohnt, das bei einem Fehler innerhalb des Tryblocks, das Programm einfach in den Catchblock springt und dort einfach weiterläuft.

In meinem C++ Programm bekomme ich einen Absturz mit der Meldung "Unhandled exception".

Also der Vertexbuffer ist nicht gültig, was auch zum absturz führt. Wie kann ich Try Catch so benutzen wie in C#?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 11.09.2006, 18:45    Titel: Antworten mit Zitat

das problem is, dass keine std::exception ausgeworfen wird. probiers mit
CPP:
try
{
}
catch( ... )
{
}


Aber mal dafür, dass überhaupt ne exception kommt: VB_Object::VertexBuffer ist bestimmt ein IDirect3DVertexBuffer9* oder? den darfstt du net deleten, release() reicht. Und danach noch auf NULL setzen.

Und noch was: am Besten machst du die freigabe aller Objekte von VB_Object im Destruktor und net von außen, dann genügt ein delete VB_Object Razz

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 11.09.2006, 20:39    Titel: Antworten mit Zitat

Danke für die Antwort

Ja es ist ein IDirect3DVertexBuffer9* und ich werde das ändern.

Das mit den 3 Punkten habe ich schon auf manchen tutorials gesehen aber ich hab es für einen Platzhalter gehalten.

Gut zu wissen Smile danke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 11.09.2006, 22:36    Titel: Antworten mit Zitat

Die Punkte "..." fangen stehen zwar für alle Arten von Exceptions allerdings bieten sie dir wenig Möglichkeit an detaiierte Informationen zu kommen.
Im allgemeinen ist es sinnvoller sein Exceptionhandling auf mögliche Exceptions zu spezialisieren und in allen anderen Fällen weiterzuleiten sodass die Exception später behandelt werden kann:

CPP:
try
{
  // irgendwas das eine Exception wirft
}
catch ( const foobarexception &e )
{
  // foobarexceptions behandeln
}
catch ( ... )
{
  // evtl Logeintrag wg nicht behandelter Exception
  throw;
}


grüße
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 15.09.2006, 14:26    Titel: Antworten mit Zitat

Wenn du selbst ein Exceptionsystem implementierst, würde ich dir empfehlen die Exceptionklassen der Standardbibliothek als Ausgangsbasis zu nehmen und von diesen abzuleiten, das ermöglicht dir das Implementieren ganzer "Exceptionhierarchien" und du bist voll kompatibel zur STL und Co.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum