errors#

The exceptions the engine throws. Every engine failure is a PlenException, an abstract base with two sealed subclasses:

  • InputException - the data or options passed to a call are invalid. Kind is an InputErrorKind (Parse or Validation), and Path names the input field the error refers to, such as tasks[2].duration.
  • ProjectException - the call doesn't fit the current state of a Project. Code is a ProjectError: NoBaseline, StaleBaseline or NeedsResync.

catch (PlenException) covers both, including the exceptions from SkillLayer.Slots in the Plen.Assign package. A null argument that isn't declared nullable throws ArgumentNullException instead.

Cycles, conflicts, a planner that didn't converge and operations that Project.Apply rejected aren't exceptions. They come back as data in the result. Every type here is in the Plen namespace. For how to handle each failure and recover a project, see Error handling.

  • InputExceptionThrown when the data or options passed to a call are invalid, with the error kind and the path of the bad field
  • ProjectExceptionThrown when a call doesn't fit the current state of a Project, with a ProjectError code
  • PlenExceptionAbstract base class of every exception the engine throws