# Exceptions & Constants

!!! info "Stable API"
    Classes on this page are marked `@api` and are guaranteed backward compatible in the 1.x release line.
    See the [BC Policy](bc-policy.md) for details.

Exception classes for error handling and constant classes for well-known string values used across the FlowDrop system.

## Overview

| Class | Type | Description |
|-------|------|-------------|
| [`FlowDropException`](#flowdropexception) | class | Base exception for all FlowDrop errors. |
| [`NodeProcessingException`](#nodeprocessingexception) | class | Thrown when a node processor encounters a runtime error during execution. |
| [`EntityProcessingException`](#entityprocessingexception) | class | Thrown when entity operations fail during node processing. |
| [`InvalidNodeConfigurationException`](#invalidnodeconfigurationexception) | class | Thrown when a node processor receives invalid configuration or parameters. |
| [`PortDirection`](#portdirection) | final class | Constants for port direction identifiers. |
| [`EdgeKeys`](#edgekeys) | final class | Constants for workflow edge metadata keys. |

## FlowDropException

**Namespace:** `Drupal\flowdrop\Exception`  
**Type:** class  
**Extends:** `RuntimeException`  
**Source:** `src/Exception/FlowDropException.php`  

Base exception for all FlowDrop errors.

All domain-specific FlowDrop exceptions should extend this class
so consumers can catch FlowDropException to handle any FlowDrop error.

---

## NodeProcessingException

**Namespace:** `Drupal\flowdrop\Exception`  
**Type:** class  
**Extends:** `FlowDropException`  
**Source:** `src/Exception/NodeProcessingException.php`  

Thrown when a node processor encounters a runtime error during execution.

Examples: HTTP request failure, external service error, or any
unrecoverable error during the process() method of a node processor.

---

## EntityProcessingException

**Namespace:** `Drupal\flowdrop\Exception`  
**Type:** class  
**Extends:** `FlowDropException`  
**Source:** `src/Exception/EntityProcessingException.php`  

Thrown when entity operations fail during node processing.

Examples: entity not found, bundle mismatch, entity save failure,
or invalid entity type.

---

## InvalidNodeConfigurationException

**Namespace:** `Drupal\flowdrop\Exception`  
**Type:** class  
**Extends:** `FlowDropException`  
**Source:** `src/Exception/InvalidNodeConfigurationException.php`  

Thrown when a node processor receives invalid configuration or parameters.

Examples: missing required parameters, invalid URL, unknown operator,
unsupported entity type, or any parameter validation failure during
node processing.

---

## PortDirection

**Namespace:** `Drupal\flowdrop\Constants`  
**Type:** final class  
**Source:** `src/Constants/PortDirection.php`  

Constants for port direction identifiers.

Used in workflow edge DTOs, node type managers, and job generation
to identify input/output port directions.

### Constants

| Constant | Value | Description |
|----------|-------|-------------|
| `INPUT` | "input" |  |
| `OUTPUT` | "output" |  |
| `INPUTS` | "inputs" |  |
| `OUTPUTS` | "outputs" |  |

---

## EdgeKeys

**Namespace:** `Drupal\flowdrop\Constants`  
**Type:** final class  
**Source:** `src/Constants/EdgeKeys.php`  

Constants for workflow edge metadata keys.

Used across workflow DTOs, job generation, and pipeline services
for edge connection data.

### Constants

| Constant | Value | Description |
|----------|-------|-------------|
| `SOURCE_HANDLE` | "sourceHandle" |  |
| `TARGET_HANDLE` | "targetHandle" |  |
| `IS_TRIGGER` | "is_trigger" |  |
| `IS_LOOPBACK` | "is_loopback" |  |
| `BRANCH_NAME` | "branch_name" |  |
| `SOURCE` | "source" |  |
| `TARGET` | "target" |  |
| `EDGE_ID` | "edge_id" |  |

---

## See Also

- [Node Processor Plugin API](node-processor.md) — where these exceptions are typically thrown
- [BC Policy](bc-policy.md) — backward compatibility guarantees

---

*This page was auto-generated from source code PHPDoc annotations. Run `php scripts/generate-api-docs.php` to regenerate.*
