# JudgeError (/docs/api/core/classes/JudgeError)



Everything else a judged call can fail on. The thrown value stays on `cause`.

## Extends [#extends]

* [`SiftlineError`](/docs/api/core/classes/SiftlineError)

## Constructors [#constructors]

### Constructor [#constructor]

```ts
new JudgeError(
   message, 
   reason, 
   status, 
   options?
): JudgeError;
```

#### Parameters [#parameters]

| Parameter  | Type                                                               |
| ---------- | ------------------------------------------------------------------ |
| `message`  | `string`                                                           |
| `reason`   | [`JudgeErrorReason`](/docs/api/core/type-aliases/JudgeErrorReason) |
| `status`   | `number` \| `null`                                                 |
| `options?` | `ErrorOptions`                                                     |

#### Returns [#returns]

`JudgeError`

#### Overrides [#overrides]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`constructor`](/docs/api/core/classes/SiftlineError#constructor)

## Properties [#properties]

### cause? [#cause]

```ts
optional cause?: unknown;
```

#### Inherited from [#inherited-from]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`cause`](/docs/api/core/classes/SiftlineError#cause)

***

### code [#code]

```ts
readonly code: SiftlineErrorCode;
```

#### Inherited from [#inherited-from-1]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`code`](/docs/api/core/classes/SiftlineError#code)

***

### message [#message]

```ts
message: string;
```

#### Inherited from [#inherited-from-2]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`message`](/docs/api/core/classes/SiftlineError#message)

***

### name [#name]

```ts
name: string;
```

#### Inherited from [#inherited-from-3]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`name`](/docs/api/core/classes/SiftlineError#name)

***

### reason [#reason]

```ts
readonly reason: JudgeErrorReason;
```

***

### retryable [#retryable]

```ts
readonly retryable: boolean;
```

#### Inherited from [#inherited-from-4]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`retryable`](/docs/api/core/classes/SiftlineError#retryable)

***

### stack? [#stack]

```ts
optional stack?: string;
```

#### Inherited from [#inherited-from-5]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`stack`](/docs/api/core/classes/SiftlineError#stack)

***

### status [#status]

```ts
readonly status: number | null;
```

***

### stackTraceLimit [#stacktracelimit]

```ts
static stackTraceLimit: number;
```

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.

#### Inherited from [#inherited-from-6]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`stackTraceLimit`](/docs/api/core/classes/SiftlineError#stacktracelimit)

## Methods [#methods]

### captureStackTrace() [#capturestacktrace]

```ts
static captureStackTrace(targetObject, constructorOpt?): 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();
```

#### Parameters [#parameters-1]

| Parameter         | Type       |
| ----------------- | ---------- |
| `targetObject`    | `object`   |
| `constructorOpt?` | `Function` |

#### Returns [#returns-1]

`void`

#### Inherited from [#inherited-from-7]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`captureStackTrace`](/docs/api/core/classes/SiftlineError#capturestacktrace)

***

### prepareStackTrace() [#preparestacktrace]

```ts
static prepareStackTrace(err, stackTraces): any;
```

#### Parameters [#parameters-2]

| Parameter     | Type          |
| ------------- | ------------- |
| `err`         | `Error`       |
| `stackTraces` | `CallSite`\[] |

#### Returns [#returns-2]

`any`

#### See [#see]

[https://v8.dev/docs/stack-trace-api#customizing-stack-traces](https://v8.dev/docs/stack-trace-api#customizing-stack-traces)

#### Inherited from [#inherited-from-8]

[`SiftlineError`](/docs/api/core/classes/SiftlineError).[`prepareStackTrace`](/docs/api/core/classes/SiftlineError#preparestacktrace)
