Custom errors can carry additional information. Add properties for error codes, affected fields, or recovery hints.
class ApiError extends Error {
constructor(message, statusCode) {
super(message);
this.name = "ApiError";
this.statusCode = statusCode;
}
}
throw new ApiError("Not found", 404);
Extra properties help callers make better decisions.