As state change exceptions are application level error, I guess it's better to inherit from StandardError rather then Exception. https://github.com/ryanza/stateflow/blob/master/lib/stateflow/exception.rb