Toon posts:

[linux c++] Segfault na catchen van eigen exception?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mensen,

Ik ben nu al anderhalve dag aan het knoeien met een eigen exception-class die ik probeer te vangen in een try-catch. Helemaal niets ingewikkelds, tenminste, dat dacht ik... Dit is de try-catch:
code:
1
2
3
4
5
6
7
try {
  // Hier wordt de exception gethrowed
} catch (TestException te) {
  // Catchen!
  cout << "Er is een exception gevangen!";
}
cout << "Einde applicatie";


Volgens mij (en alle tutorials die ik gelezen heb...) moet ik nu de melding "Er is een exception gevangen!" krijgen (die krijg ik), gevolgd door "Einde applicatie". Echter, dat "Einde applicatie" verschijnt niet, daarvoor in de plaats krijg ik een "Segmentation Fault"! Ik heb gezocht en geprobeerd, maar het is me nog niet gelukt om dit te fixen... Ik denk niet dat de TestException-klasse problemen geeft, aangezien het mis lijkt te gaan in de try-catch :?... Kan iemand me vertellen wat ik misdoe?

  • Eelis
  • Registratie: Januari 2003
  • Laatst online: 21-02-2015
.

[ Voor 106% gewijzigd door Eelis op 18-02-2015 19:19 ]


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
class TestException {
    private:
        string _inFunction;
        string _description;
        
    public:
        TestException(string inFunction, string description);       
};


En de functie die dat ding throwed:
code:
1
2
3
void testFunctie() {
  throw TestException("testFunctie", "Een prachtige exception om te testen");
}

  • Eelis
  • Registratie: Januari 2003
  • Laatst online: 21-02-2015
.

[ Voor 99% gewijzigd door Eelis op 18-02-2015 19:19 ]


Verwijderd

Topicstarter
Het lijkt erop dat ik nog ergens een destructor in de "TestException" had zitten (die heb ik hierboven niet neergezet, leek me onbelangrijk) die niet in orde was... Blijkbaar wordt die aangeroepen aan het einde van de 'catch'...

  • Eelis
  • Registratie: Januari 2003
  • Laatst online: 21-02-2015
.

[ Voor 99% gewijzigd door Eelis op 18-02-2015 19:19 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Bij de throw al, nadat de temporary in de throw-expressie gekopieerd is in de uiteindelijke catch (TestException te). Twee objecten TestException dus, dus ook twee dtors. Werkt de copy ctor van je TestException wel?

PS. De kopie is mogelijk, maar niet verplicht. Het enige wat verplicht is is een public copy ctor.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1