Try Block — Input & Output
Output port reference, execution context mechanics, and exception propagation flow.
Output Ports
| Port | Fires When | Notes |
|---|---|---|
| success | Always — immediately after the Try Block node executes. This port fires to enter the guarded scope. | All nodes connected to this port are part of the protected try scope. No output data is produced by the Try Block itself. |
The Try Block node produces no output data of its own. Its sole function is structural — it marks the beginning of the guarded scope. All data flows from the nodes inside the scope as normal.
Execution Flow — Happy Path (No Exception)
Try Block Executes — pushes exception context frame, fires "success" port
Node A Executes normally inside the scope
Node B Executes normally inside the scope
Catch Block Skipped — no exception occurred
Finally Block Executes (if present) — cleanup runs regardless
Next Node Continues after the try/catch/finally trio
Execution Flow — Exception Path
Try Block Executes — pushes exception context frame
Node A Executes normally
Node B Throws an exception (e.g., HTTP 500 from external API)
Node C SKIPPED — execution jumps immediately to the Catch Block
Catch Block Executes — exception details in __exception_* variables
Finally Block Executes (if present)
Next Node Continues after the trio
Exception Context Data
When an exception is caught, the following data becomes available in the workflow's memory variables (accessible in the Catch Block and Finally Block):
| Variable | Type | Description |
|---|---|---|
__exception_type__ |
string | The .NET exception class name (e.g., HttpRequestException, TimeoutException, NullReferenceException). |
__exception_message__ |
string | The human-readable exception message describing what went wrong. |
__exception_stacktrace__ |
string | The full .NET stack trace for developer debugging and log submission. |
Access these in expressions within the Catch Block:
// In a Set Variable node inside the Catch Block
$var.error_type = $mem.__exception_type__
$var.error_message = $mem.__exception_message__
// In a Slack notification message
"Workflow error in API call: {{ $mem.__exception_type__ }} — {{ $mem.__exception_message__ }}"