Errors during Execution

From expecco Wiki (Version 2.x)
Jump to: navigation, search

During execution, errors might be generated from various places. Common errors and how to deal with them is documented here.

Execution Errors

No value for input "x" of step "Y"

A step's input pin has no input data. This happens if a step was started and a required input pin is missing. Notice, that this error is triggered only when a step-activity was triggered due to either the autostart flag (of the step) or by a trigger input value, or if the pin is non-triggering and another pin caused the trigger. And when the step's action accesses the input pin's data value.

In an elementary action, you can check for a pin to have received a value via the "pin.hasValue()" query.

Fix:

  • provide an input value either by:
  • setting a default value for the pin in the step's action-block definition (the schema)
  • giving the step's pin a freeze value (constant)
  • connecting the step's input pin to another step's output pin or one of the compound action's inputs
  • checking for the presence of a value (in an elementary block)
  • change the pin type to "parameter-pin"

 

Output value x (x-class) is not compatible with datatype of pin "y" (y-class)

An invalid datum (not matching the pin's type) was written to an output pin, typically inside an action with elementary code.

Fix:

  • check if the correct value is written to the pin
  • change the output pin's datatype to match the value's
  • change the output pin's datatype to Any
  • disable typechecks (usually not a good idea)

 

Telegram-data for non-triggering pin "x" of inactive step "Y"

A telegram input pin (also called "mailbox pin") received a value after the step has already finished its execution. This is reported for non-triggering pins only - if it was triggering, a new activity would have been started. However, as the pin is non-triggering, the value is lost and there is noone to handle it.

Fix:

  • check if a mailbox pin is really required
  • either make sure that the mailbox input pin receives its value earlier (i.e. while the step is still being executed), or the target step is stopped later,
  • or set the "ignore exception" behavior of the target step (see note below)

Notice: this error represents a special situation, in that actually neither the sending step, nor the mailbox-target step are individually responsible for the error. Also, because both have already finished, the error cannot be presented at either step's exceptionOutput pin, as this would lead to the strange situation, that both their trigger-output and their exception output pin's would be firing. Which would be illegal behavior. Therefore, the error is reported to the containing compound action, as its network is probably wrong.

In principle, this argument would also apply to the "ignore exceptions" flag. However, users found it convenient, to be able to ignore this error on the step level, instead of the compound level. Therefore a slight different semantic is implemented for this very error, in that it is ignored iff the target mailbox pin's step has the ignoreException flag set. Any errors internal in the target step are still reported via its exception output pin, if present.

Trying to modify readonly variable: "x"

The variable "x" has the read-only attribute.


Fix:

  • change the variable's "R/W" (read-write) attribute

 



Copyright © 2014-2018 eXept Software AG