Re: [Flightgear-devel] try ... catch ... throw (up)

2005-11-12 Thread Vassilii Khachaturov
 Here's what I'm doing:

 In the Table class:

 In FGTable constructor:

 if (operation_types.find(parent_type) == string::npos) {
   internal = true;
 } else {
   throw(string(An internal table cannot be ...));
 }

 Now, this seems to work OK - I throw an exception if a situation
 occurs that is invalid.
[snip]
 I'm probably missing something fundamental here. Anyone have any suggestions?

 Jon

I am unsure it is OK to through a temporary object like this.
It's created on the stack right there at the same frame where it's thrown,
but IIRC, as throw unwinds the stack, it is auto-destructed. You should
be throwing an object that has lifetime encompassing the outer catch
handler.



___
Flightgear-devel mailing list
Flightgear-devel@flightgear.org
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d


RE: [Flightgear-devel] try ... catch ... throw (up)

2005-11-12 Thread Jon Berndt
 Vassilii Khachaturov wrote:

 I am unsure it is OK to through a temporary object like this.
 It's created on the stack right there at the same frame where it's thrown,
 but IIRC, as throw unwinds the stack, it is auto-destructed. You should
 be throwing an object that has lifetime encompassing the outer catch
 handler.

Ah! Yes, that sounds correct. I'll have to go back and change my throws.

Thanks,

Jon


___
Flightgear-devel mailing list
Flightgear-devel@flightgear.org
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d