---
title: HrefError
---

# HrefError

<a href="https://github.com/remix-run/remix/blob/remix@3.0.0-alpha.6/packages/route-pattern/src/lib/route-pattern/href.ts#L107" target="_blank">View Source</a>

## Summary

Error thrown when a route pattern cannot generate an href from the supplied args.

## Signature

```ts
class HrefError {
  constructor(details: HrefErrorDetails): HrefError;

  // Properties
  cause?: unknown;
  details: HrefErrorDetails;
  message: string;
  name: string;
  stack?: string;
  stackTraceLimit: number;

  // Methods
  captureStackTrace(targetObject: object, constructorOpt: Function): void;
  message(details: HrefErrorDetails): string;
  prepareStackTrace(err: Error, stackTraces: CallSite[]): any;
}

```

## Constructor Params

### details

## Properties

### cause

### details

Structured details describing why href generation failed.

### message

### name

### stack

### stackTraceLimit

The `Error.stackTraceLimit` property specifies the number of stack frames
collected by a stack trace (whether generated by `new Error().stack` or
`Error.captureStackTrace(obj)`).

The default value is `10` but may be set to any valid JavaScript number. Changes
will affect any stack trace captured _after_ the value has been changed.

If set to a non-number value, or set to a negative number, stack traces will
not capture any frames.

## Methods

### captureStackTrace(targetObject: object, constructorOpt: Function): void

Creates a `.stack` property on `targetObject`, which when accessed returns
a string representing the location in the code at which
`Error.captureStackTrace()` was called.

```js
const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack;  // Similar to `new Error().stack`
```

The first line of the trace will be prefixed with
`${myObject.name}: ${myObject.message}`.

The optional `constructorOpt` argument accepts a function. If given, all frames
above `constructorOpt`, including `constructorOpt`, will be omitted from the
generated stack trace.

The `constructorOpt` argument is useful for hiding implementation
details of error generation from the user. For instance:

```js
function a() {
  b();
}

function b() {
  c();
}

function c() {
  // Create an error without stack trace to avoid calculating the stack trace twice.
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // Capture the stack trace above function b
  Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
  throw error;
}

a();
```

#### targetObject

#### constructorOpt

### message(details: HrefErrorDetails): string

Formats an error message for the given href failure details.

#### details

Structured href failure details.

### prepareStackTrace(err: Error, stackTraces: CallSite[]): any

#### err

#### stackTraces