For the complete documentation index, see llms.txt. This page is also available as Markdown.

Error Handling Patterns

Error handling and recovery patterns in Aurelia 2, including component error management, event handling, and user-friendly error recovery strategies.

Aurelia 2 provides several mechanisms for handling errors gracefully and implementing recovery strategies. This guide covers the practical patterns for managing errors in components, events, and user interactions.

Component Error Handling

Promise-based Error Handling

Aurelia uses promise-based error handling throughout its lifecycle. Errors in lifecycle hooks are caught and propagated through promise chains:

export class ErrorHandlingComponent {
  private data: any[] = [];
  private error: Error | null = null;
  private loading = false;

  async binding(): Promise<void> {
    this.loading = true;
    this.error = null;
    
    try {
      this.data = await this.dataService.loadData();
    } catch (error) {
      this.error = error instanceof Error ? error : new Error('Unknown error');
      console.error('Data loading failed:', error);
    } finally {
      this.loading = false;
    }
  }

  async retryLoad(): Promise<void> {
    await this.binding();
  }
}

Template:

Lifecycle Hook Error Management

Handle errors in different lifecycle hooks with appropriate recovery strategies:

Event Handler Error Handling

Safe Event Handlers

Aurelia provides built-in error handling for event handlers. You can configure custom error handling:

Error-Safe Event Handlers

Wrap event handlers in try-catch blocks for custom error handling:

Promise Template Controller Error Handling

Aurelia provides declarative error handling in templates using the promise template controller:

Template with promise error handling:

Error Recovery Strategies

Retry with Backoff

Implement retry logic with exponential backoff:

Graceful Degradation

Provide fallback functionality when primary features fail:

User-Friendly Error Messaging

Error Message Component

Create a reusable error message component:

Template:

Global Error Handler

Create a global error handler service:

Testing Error Scenarios

Unit Testing Error Handling

Best Practices

1. Fail Fast, Recover Gracefully

  • Detect errors early in the component lifecycle

  • Provide user-friendly error messages

  • Implement retry mechanisms where appropriate

2. Error Boundary Pattern

  • Use promise-based error handling for async operations

  • Implement fallback UI for failed components

  • Prevent error propagation to parent components

3. Logging and Monitoring

  • Log errors for debugging and monitoring

  • Include context information (user actions, component state)

  • Use structured error codes for better categorization

4. User Experience

  • Show loading states during error recovery

  • Provide clear retry options

  • Use progressive disclosure for error details

5. Testing

  • Test both success and failure scenarios

  • Mock services to simulate various error conditions

  • Verify error recovery mechanisms work correctly

By implementing these error handling patterns, your Aurelia applications will be more robust, user-friendly, and maintainable, providing better experiences even when things go wrong.

Last updated

Was this helpful?