I've been trying to use exception handling in a particularly appropriate place 
in JSBSim,
but am having little success, and it's got me confused.

I have a section where I am reading in some data. If it is inappropriate, I 
need to let
the user know and exit.

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.

Here's where the above code is originally called from:

In FGFunction constructor:

try {
  Parameters.push_back(new FGTable(PropertyManager, element));
} catch (...) {throw;}

This is supposed to pass the exception on up the chain to here the code that 
calls the
above:

In FGAerodynamics::Load():

try {
  variables.push_back( new FGFunction(PropertyManager, function_element) );
} catch(string msg) {
  return false;
}

Execution seems to get to the "throw" in FGFunction and dies. Execution never 
gets to the
handler in FGAerodynamics. I get a segfault.

I'm probably missing something fundamental here. Anyone have any suggestions?

Jon


_______________________________________________
Flightgear-devel mailing list
[email protected]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d

Reply via email to