Errors
The FlexiQ error hierarchy — catch by specific type or by the FlexiQError base.
The FlexiQ error hierarchy — catch by specific type or by the FlexiQError base.
Every error the SDK throws extends FlexiQError, so a single catch can scope
all of them; the specific subclasses let you branch on what went wrong.
import { FlexiQError, ResourceNotFoundError } from "@byteveda/flexiq";
try {
await runJob();
} catch (err) {
if (err instanceof ResourceNotFoundError) reRegister(err.resourceName);
else if (err instanceof FlexiQError) report(err);
else throw err;
}| Class | Extends | Thrown when |
|---|---|---|
FlexiQError | Error | Base — never thrown directly. |
TaskNotRegisteredError | FlexiQError | A worker dequeues a job whose task name isn't registered. |
DuplicateTaskError | FlexiQError | Two declarations claim one task name — at task(), or when a queue claims one that collides with a queue.task() it already holds. Carries taskName, owner. See Task discovery. |
TaskNotBoundError | FlexiQError | handle.enqueue() before any queue claimed the declaration. Carries taskName. |
TaskDiscoveryError | FlexiQError | discover() couldn't read a task directory, or one of its modules threw on import. Carries path, and the underlying failure as cause. |
JobFailedError | FlexiQError | result() awaits a job that failed or dead-lettered. |
JobCancelledError | FlexiQError | result() awaits a cancelled job. |
ResultTimeoutError | FlexiQError | result() times out before the job settles. |
QueueError | FlexiQError | Queue construction / operational error (e.g. no dbPath/dsn). |
LockNotAcquiredError | FlexiQError | withLock can't acquire a held lock. |
LockLostError | FlexiQError | A held lock's lease expired before withLock's guarded section finished. |
SerializationError | FlexiQError | (De)serialization or payload-integrity failure (e.g. a bad SignedSerializer signature). |
CryptoError | SerializationError | A payload codec (HmacCodec, AesGcmCodec) fails to decrypt or verify. |
NotesValidationError | FlexiQError | A notes object breaks the contract (>15 fields or >4 KiB). |
WorkflowError | FlexiQError | Workflow definition, submission, or query error. |
PredicateRejectedError | FlexiQError | An enqueue-time gate rejected the submission. |
InterceptionError | FlexiQError | An enqueue interceptor rejects, misbehaves, or redirects illegally. |
ProxyError | FlexiQError | A proxy handler signature, expiry, purpose, or allowlist failure. |
ResourceError | FlexiQError | Base for resource dependency-injection errors. |
ResourceNotFoundError | ResourceError | Resolving a resource name that was never registered. |
ResourceScopeError | ResourceError | Resolving a task-scoped resource at worker scope. |
ResourceUnavailableError | ResourceError | A pooled resource couldn't be checked out before its acquire timeout. |
Selected errors carry context: TaskNotRegisteredError.taskName,
JobFailedError.jobId, ResultTimeoutError.timeoutMs,
LockNotAcquiredError.lockName, ResourceNotFoundError.resourceName.
See error handling for retry / timeout / dead-letter behavior around a failing task.