Exception: Roby::LocalizedError
- Inherits:
-
ExceptionBase
- Object
- RuntimeError
- ExceptionBase
- Roby::LocalizedError
- Includes:
- DRoby::V5::LocalizedErrorDumper
- Defined in:
- lib/roby/standard_errors.rb,
lib/roby/droby/enable.rb
Overview
This kind of errors are generated during the plan execution, allowing to blame a fault on a plan object (#failure_point). The precise failure point is categorized in the #failed_event, #failed_generator and #failed_task. It is guaranteed that one of #failed_generator and #failed_task is non-nil.
Direct Known Subclasses
ActionStateTransitionFailed, CodeError, CommandRejected, Coordination::Models::Script::DeadInstruction, Coordination::Script::TimedOut, DRoby::V5::UntypedLocalizedError, EmissionRejected, EventCanceled, EventNotControlable, EventNotExecutable, EventPreconditionFailed, EventStructure::MissedDeadlineError, EventStructure::OccurenceConstraintViolation, EventStructure::TemporalConstraintViolation, PlanningFailedError, RelationFailedError, TaskEmergencyTermination, TaskNotExecutable, ToplevelTaskError, UnreachableEvent
Instance Attribute Summary collapse
-
#failed_event ⇒ Object
readonly
The objects of the given categories which are related to #failure_point.
-
#failed_generator ⇒ Object
readonly
The objects of the given categories which are related to #failure_point.
-
#failed_task ⇒ Object
readonly
The objects of the given categories which are related to #failure_point.
-
#failure_point ⇒ Object
readonly
The object describing the point of failure.
Attributes inherited from ExceptionBase
Class Method Summary collapse
-
.match ⇒ Queries::LocalizedErrorMatcher
Create a Queries::LocalizedErrorMatcher that matches this exception.
- .to_execution_exception_matcher ⇒ Queries::ExecutionExceptionMatcher
Instance Method Summary collapse
-
#fatal? ⇒ Boolean
If true, such an exception causes the execution engine to stop tasks in the hierarchy.
-
#initialize(failure_point) ⇒ LocalizedError
constructor
Create a LocalizedError object with the given failure point.
-
#involved_plan_object?(obj) ⇒ Boolean
True if
objis involved in this error. - #pretty_print(pp) ⇒ Object
-
#propagated? ⇒ Boolean
If true, such an exception will be propagated in the plan dependency structure.
- #to_execution_exception ⇒ Object
Methods included from DRoby::V5::LocalizedErrorDumper
Methods inherited from ExceptionBase
#each_original_exception, #report_exceptions_from
Methods included from DRoby::V5::ExceptionBaseDumper
Methods included from DRoby::V5::Builtins::ExceptionDumper
Constructor Details
#initialize(failure_point) ⇒ LocalizedError
Create a LocalizedError object with the given failure point
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/roby/standard_errors.rb', line 95 def initialize(failure_point) super() @failure_point = failure_point @failed_task, @failed_event, @failed_generator = nil if failure_point.kind_of?(Event) @failed_event = failure_point @failed_generator = failure_point.generator elsif failure_point.kind_of?(EventGenerator) @failed_generator = failure_point elsif failure_point.kind_of?(Task) @failed_task = failure_point end if !@failed_task && @failed_generator && @failed_generator.respond_to?(:task) @failed_task = failed_generator.task end if !@failed_task && !@failed_generator raise ArgumentError, "cannot deduce a task and/or a generator from #{failure_point}" end if failed_event failed_event.protect_all_sources end end |
Instance Attribute Details
#failed_event ⇒ Object (readonly)
The objects of the given categories which are related to #failure_point
92 93 94 |
# File 'lib/roby/standard_errors.rb', line 92 def failed_event @failed_event end |
#failed_generator ⇒ Object (readonly)
The objects of the given categories which are related to #failure_point
92 93 94 |
# File 'lib/roby/standard_errors.rb', line 92 def failed_generator @failed_generator end |
#failed_task ⇒ Object (readonly)
The objects of the given categories which are related to #failure_point
92 93 94 |
# File 'lib/roby/standard_errors.rb', line 92 def failed_task @failed_task end |
#failure_point ⇒ Object (readonly)
The object describing the point of failure
89 90 91 |
# File 'lib/roby/standard_errors.rb', line 89 def failure_point @failure_point end |
Class Method Details
.match ⇒ Queries::LocalizedErrorMatcher
Create a Queries::LocalizedErrorMatcher that matches this exception
150 151 152 |
# File 'lib/roby/standard_errors.rb', line 150 def self.match Roby::Queries::LocalizedErrorMatcher.new.with_model(self) end |
.to_execution_exception_matcher ⇒ Queries::ExecutionExceptionMatcher
143 144 145 |
# File 'lib/roby/standard_errors.rb', line 143 def self.to_execution_exception_matcher Roby::Queries::ExecutionExceptionMatcher.new.with_model(self) end |
Instance Method Details
#fatal? ⇒ Boolean
If true, such an exception causes the execution engine to stop tasks in the hierarchy. Otherwise, it only causes notification(s).
80 |
# File 'lib/roby/standard_errors.rb', line 80 def fatal?; true end |
#involved_plan_object?(obj) ⇒ Boolean
True if obj is involved in this error
135 136 137 138 139 140 |
# File 'lib/roby/standard_errors.rb', line 135 def involved_plan_object?(obj) obj.kind_of?(PlanObject) && (obj == failed_event || obj == failed_generator || obj == failed_task) end |
#pretty_print(pp) ⇒ Object
125 126 127 128 129 130 131 132 |
# File 'lib/roby/standard_errors.rb', line 125 def pretty_print(pp) pp.text "#{self.class.name}" if !.empty? pp.text ": #{message}" end pp.breakable failure_point.pretty_print(pp) end |
#propagated? ⇒ Boolean
If true, such an exception will be propagated in the plan dependency structure. Otherwise, it’s directly reported to the plan itself (which can choose to handle it).
This is usually set to false for exceptions that report global information about the plan, such as e.g. MissionFailedError
87 |
# File 'lib/roby/standard_errors.rb', line 87 def propagated?; true end |
#to_execution_exception ⇒ Object
121 122 123 |
# File 'lib/roby/standard_errors.rb', line 121 def to_execution_exception ExecutionException.new(self) end |