# ol.llx.ai.errors

_platforms: clj, cljs_

## llx-error?

### clj

_platforms: clj_

```clojure
(llx-error? ex)
```

Returns true when `ex` is a structured LLX error exception.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L5-L8)

### cljs

_platforms: cljs_

```clojure
(llx-error? ex)
```

Returns true when `ex` is a structured LLX error exception.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L5-L8)

---

## recoverable?

### clj

_platforms: clj_

```clojure
(recoverable? ex)
```

Returns true when `ex` is classified as recoverable.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L10-L13)

### cljs

_platforms: cljs_

```clojure
(recoverable? ex)
```

Returns true when `ex` is classified as recoverable.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L10-L13)

---

## rate-limit-error?

### clj

_platforms: clj_

```clojure
(rate-limit-error? ex)
```

Returns true when `ex` is a rate-limit error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L15-L18)

### cljs

_platforms: cljs_

```clojure
(rate-limit-error? ex)
```

Returns true when `ex` is a rate-limit error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L15-L18)

---

## quota-exceeded-error?

### clj

_platforms: clj_

```clojure
(quota-exceeded-error? ex)
```

Returns true when `ex` is a quota-exceeded error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L20-L23)

### cljs

_platforms: cljs_

```clojure
(quota-exceeded-error? ex)
```

Returns true when `ex` is a quota-exceeded error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L20-L23)

---

## rate-limited-error?

### clj

_platforms: clj_

```clojure
(rate-limited-error? ex)
```

Returns true when `ex` is either a rate-limit or quota-exceeded error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L25-L28)

### cljs

_platforms: cljs_

```clojure
(rate-limited-error? ex)
```

Returns true when `ex` is either a rate-limit or quota-exceeded error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L25-L28)

---

## timeout-error?

### clj

_platforms: clj_

```clojure
(timeout-error? ex)
```

Returns true when `ex` is a timeout error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L30-L33)

### cljs

_platforms: cljs_

```clojure
(timeout-error? ex)
```

Returns true when `ex` is a timeout error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L30-L33)

---

## client-error?

### clj

_platforms: clj_

```clojure
(client-error? ex)
```

Returns true when `ex` is a non-recoverable client-classified error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L35-L38)

### cljs

_platforms: cljs_

```clojure
(client-error? ex)
```

Returns true when `ex` is a non-recoverable client-classified error.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L35-L38)

---

## transient-error?

### clj

_platforms: clj_

```clojure
(transient-error? ex)
```

Returns true when `ex` is a transient error eligible for retry handling.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L40-L43)

### cljs

_platforms: cljs_

```clojure
(transient-error? ex)
```

Returns true when `ex` is a transient error eligible for retry handling.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L40-L43)

---

## should-retry?

### clj

_platforms: clj_

```clojure
(should-retry? ex)
(should-retry? ex & opts)
```

Returns true when retry policy allows another attempt for `ex`.

Optional keyword arguments include `:max-retries` and `:current-retry`.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L45-L52)

### cljs

_platforms: cljs_

```clojure
(should-retry? ex)
(should-retry? ex & opts)
```

Returns true when retry policy allows another attempt for `ex`.

Optional keyword arguments include `:max-retries` and `:current-retry`.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L45-L52)

---

## retry-delay-ms

### clj

_platforms: clj_

```clojure
(retry-delay-ms ex retry-count)
```

Returns the retry delay in milliseconds for `ex` at `retry-count`.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L54-L57)

### cljs

_platforms: cljs_

```clojure
(retry-delay-ms ex retry-count)
```

Returns the retry delay in milliseconds for `ex` at `retry-count`.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/errors.cljc#L54-L57)
