---
title: "SpiffWorkflow Exceptions — SpiffWorkflow 3.0.0 documentation"
description: "Details about the exceptions and exception hierarchy within SpiffWorkflow"
source_url: https://spiff.works/docs/spiffworkflow/bpmn/errors.html
---

☰ Menu

# SpiffWorkflow Exceptions[](#spiffworkflow-exceptions "Link to this heading")

Details about the exceptions and exception hierarchy within SpiffWorkflow

## SpiffWorkflowException[](#spiffworkflowexception "Link to this heading")

Base exception for all exceptions raised by SpiffWorkflow

## ValidationException[](#validationexception "Link to this heading")

**Extends**
SpiffWorkflowException

Thrown during the parsing of a workflow.

**Attributes/Methods**

- **tag**: The type of xml tag being parsed
- **id**: the id attribute of the xml tag, if available.
- **name**: the name attribute of the xml tag, if available.
- **line\_number**: the line number where the tag occurs.
- **file\_name**: The name of the file where the error occurred.
- **message**: a human readable error message.

## WorkflowException[](#workflowexception "Link to this heading")

When an error occurs with a Task Specification (maybe should have been called
a SpecException)

**Extends**
SpiffWorkflowException

**Attributes/Methods**

- **task\_spec**: The TaskSpec - the specific Task, Gateway, etc… that caused the error to happen.
- **error**: a human readable error message describing the problem.

## WorkflowDataException[](#workflowdataexception "Link to this heading")

When an exception occurs moving data between tasks and Data Objects (including
data inputs and data outputs.)

**Extends**
WorkflowException

**Attributes/Methods**

(in addition to the values in a WorkflowException)

> - **task**: The specific task (not the task spec, but the actual executing task)
> - **data\_input**: The spec of the input variable
> - **data\_output**: The spec of the output variable

## WorkflowTaskException[](#workflowtaskexception "Link to this heading")

**Extends**
WorkflowException

It will accept the line\_number and error\_line as arguments - if the
underlying error provided is a SyntaxError it will try to derive this
information from the error.
If this is a name error, it will attempt to calculate a did-you-mean
error\_msg.

**Attributes/Methods**

(in addition to the values in a WorkflowException)

> - **task**: The specific task (not the task spec, but the actual executing task)
> - **error\_msg**: The detailed human readable message. (conflicts with error above)
> - **exception**: The original exception this wraps around.
> - **line\_number** The line number that contains the error
> - **offset** The point in the line that caused the error
> - **error\_line** The content of the line that caused the error.
> - **get\_task\_trace**: Provided a specific Task, will work it’s way through the workflow/sub-processes and
>   call activities to show where an error occurred. Useful if the error happened within a deeply nested
>   structure (where call activities include call activities ….)
> - **did\_you\_mean\_name\_error**: Compares a missing data value with the contents of the data
