Module: Roby::ExceptionHandlingObject
- Included in:
- Roby
- Defined in:
- lib/roby/exceptions.rb
Overview
This module is to be included in all objects that are able to handle exception. These objects should define
#each_exception_handler { |matchers, handler| ... }
See Task::on_exception and Task#on_exception
Instance Method Summary collapse
-
#handle_exception(exception_object) ⇒ Object
Calls the exception handlers defined in this task for
exception_object.exceptionReturns true if the exception has been handled, false otherwise. -
#pass_exception ⇒ Object
To be used in exception handlers themselves.
Instance Method Details
#handle_exception(exception_object) ⇒ Object
Calls the exception handlers defined in this task for exception_object.exception Returns true if the exception has been handled, false otherwise
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/roby/exceptions.rb', line 125 def handle_exception(exception_object) each_exception_handler do |matchers, handler| if matchers.find { |m| m === exception_object.exception } catch(:next_exception_handler) do begin handler.call(self, exception_object) return true rescue Exception => e if self == Roby Propagation.add_framework_error(e, 'global exception handling') else Propagation.add_error(FailedExceptionHandler.new(e, self, exception_object)) end end end end end return false end |
#pass_exception ⇒ Object
To be used in exception handlers themselves. Passes the exception to the next matching exception handler
119 120 121 |
# File 'lib/roby/exceptions.rb', line 119 def pass_exception throw :next_exception_handler end |