Skip to content

Error Classification & Handling

In JavaScript and Angular apps, thrown errors can be strings, HTTP error objects, DOMException aborts, or custom domain errors.

ngx-task wraps all thrown exceptions into a unified, type-safe TaskError object accessible via task.error().


The TaskError Interface

export interface TaskError {
/** Error classification code */
readonly code: TaskErrorCode | string;
/** Human-readable error message */
readonly message: string;
/** Original caught error object */
readonly raw: unknown;
/** Timestamp when error occurred */
readonly timestamp: number;
}

Standard built-in error codes:

  • 'TASK_CANCELLED': Execution was cancelled by user, lifecycle, or policy.
  • 'TASK_TIMEOUT': Execution exceeded configured timeout duration.
  • 'QUEUE_OVERFLOW': Execution was rejected due to queue size limits.
  • 'TASK_EXECUTION_ERROR': Application/network error thrown by handler function.

Custom Error Classifier (classifyError)

Customize error categorization by passing classifyError:

import { HttpErrorResponse } from '@angular/common/http';
import { createTask, TaskError } from 'ngx-task';
const checkoutTask = createTask(checkoutHandler, {
classifyError: (rawError: unknown): TaskError => {
if (rawError instanceof HttpErrorResponse) {
if (rawError.status === 401) {
return {
code: 'UNAUTHORIZED',
message: 'Your session has expired. Please log in again.',
raw: rawError,
timestamp: Date.now(),
};
}
}
return {
code: 'CHECKOUT_FAILED',
message: (rawError as Error)?.message ?? 'An unknown error occurred',
raw: rawError,
timestamp: Date.now(),
};
},
});