javascript / intermediate
Snippet
Extending Native Error Classes for Categorized UI Fallback Handling
Subclassing JavaScript's built-in Error allows adding structured properties such as recovery flags and domain metadata. React components can inspect the error instance using the instanceof operator to render tailored fallback actions based on the specific error type.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { useState } from 'react';class OperationalTimeoutError extends Error {constructor(serviceName, attempts) {super(`Operation on ${serviceName} timed out after ${attempts} attempts.`);this.name = 'OperationalTimeoutError';this.serviceName = serviceName;this.attempts = attempts;this.canRetry = true;}}export function HealthMonitor() {const [fault, setFault] = useState(null);const simulateTimeout = () => {const failure = new OperationalTimeoutError('BillingGateway', 3);setFault(failure);};return (<div><button onClick={simulateTimeout}>Trigger Failure</button>{fault instanceof OperationalTimeoutError && (<div role="alert"><p>{fault.message}</p>{fault.canRetry && <button onClick={simulateTimeout}>Retry Service</button>}</div>)}</div>);}
react
Breakdown
1
class OperationalTimeoutError extends Error {
Defines a domain-specific custom error type inheriting from the standard Error object.
2
this.canRetry = true;
Attaches contextual metadata directly to the error instance to instruct UI recovery flows.
3
{fault instanceof OperationalTimeoutError && (
Uses instanceof type checking in the render block to display specific UI recovery controls.