Skip to main content

Error utilities

Error utilities provide a sophisticated system for managing errors within your application. Using TypeScript interfaces and types, they provide a structured approach to recording, accessing, and logging errors.

Key features​

  • ErrorMap<TErrorDetailMap> Interface: Outlines the structure for an error map, including methods for setting, getting, and managing errors, alongside properties for accessing the last error and a consolidated error message string.
  • DefaultErrorMap<TErrorDetailMap> Class: Implements the ErrorMap interface, providing concrete logic for error management, including observable properties for reactive UI updates.

Examples​

Creating an error map​

Use the createErrorMap factory function to instantiate an ErrorMap with a custom logger function. This logger is invoked whenever an error is set, allowing for flexible error reporting.

import { createErrorMap } from '@genesislcap/foundation-utils';

const logger = (key, error) => console.error(`Error [${key}]:`, error.message);
const errorMap = createErrorMap(logger);

Recording an error​

Add errors to the map using the set method. This records the error under the specified key and updates the lastError observable property.

errorMap.set('networkError', new Error('Failed to fetch data'));

Accessing errors​

Retrieve specific errors by key, check for their presence, or get all errors as an iterable collection using get, has, and values methods, respectively.

if (errorMap.has('networkError')) {
const networkError = errorMap.get('networkError');
console.log(networkError.message);
}

for (const error of errorMap.values()) {
console.warn(error.message);
}

Managing errors​

Errors can be individually removed or the entire map can be cleared. The lastError is also managed accordingly.

errorMap.delete('networkError'); // Remove a specific error
errorMap.clear(); // Clear all errors

Error messages​

The messages property provides a concatenated string of all error messages, prefaced by the total error count. This is useful for displaying error summaries to the user.

console.log(errorMap.messages); // Outputs formatted error messages

Considerations​

  • Use the ErrorMap to centralize error handling and reporting in your application.
  • Use the lastError and messages for user-facing error feedback, ensuring a comprehensive overview of current issues.
  • Employ the provided logger function to integrate with existing logging frameworks or error tracking services, enhancing observability.