
"Andreas Huber" <ah2003@gmx.net> writes:
Is that superstate always a reasonable place to end up upon failure?
Well, you don't excatly end up there, right? The superstate (more accurately the outermost unstable state) is only a "container" for reaction(s) to the exception_thrown event. If such a reaction is found and executed it *must* make a transition to another state (sort of a safe haven) or terminate the state machine itself.
What does "terminate the state machine" mean?
Only then are we stable again. To answer your question: Yes, I believe so.
FWIW, I don't know what an orthogonal region is, and I don't have time to learn right now, so I'm probably missing a lot.
I don't think you are missing that much. I hope I have managed to convince you that everything works fine for state machines without orthogonal regions.
I wish you had; I'll just have to take your word for it because I'm out of time for discussion. Your method of handling errors as described above seems (with my very shallow understanding) a bit capricious and hard-to-manage to me, and it seems strange to keep that system while ruling out a chance for strong-guarantee behavior (where an exit action may throw).
Orthogonal regions do complicate the matter but not by a lot.
OK. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com