> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markpdf.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Manejo de errores

> Cómo utilizar ConvertFile expone errores y cómo detectarlos con el cliente sin formato.

# Manejo de errores

## Con `useConvertFile`

El gancho nunca se lanza dentro del componente: los errores permanecen en el campo de estado `error`, como instancias de `MarkpdfError` (la misma clase que [SDK base](/docs/public/es/sdks/nodejs/reference)):

```tsx theme={null}
const { convert, status, error } = useConvertFile();

if (status === "error" && error) {
  return <p>Error {error.statusCode}: {error.detail}</p>;
}
```

`convert()` también rechaza la promesa que devuelve, por lo que puedes capturarla allí si prefieres `try/catch` en lugar de leer `error` del estado:

```tsx theme={null}
try {
  await convert(file);
} catch (err) {
  // same object that ended in `error`
}
```

## Con cliente sin formato (`useMarkpdf`)

Los métodos `useMarkpdf()` (`convertFile`, `convertFromUrl`, `convertStream`, `pdfIndex`, `getJob`) lanzan subclases escritas de `MarkpdfError`, tal como en Node.js:

```tsx theme={null}
import { useMarkpdf } from "@markpdf/react";
import { MarkpdfAuthError, MarkpdfPayloadTooLargeError, MarkpdfRateLimitError } from "@markpdf/sdk";

function Convert({ url }: { url: string }) {
  const client = useMarkpdf();

  const run = async () => {
    try {
      const markdown = await client.convertFromUrl(url, { mode: "fast" });
      console.log(markdown);
    } catch (err) {
      if (err instanceof MarkpdfAuthError) {
        console.error("API key invávalida");
      } else if (err instanceof MarkpdfPayloadTooLargeError) {
        console.error("Document too large");
      } else if (err instanceof MarkpdfRateLimitError) {
        console.error("Rate limited, retry later");
      } else {
        throw err;
      }
    }
  };

  return <button onClick={run}>Convertir</button>;
}
```

Consulte la [tabla de errores completa](/docs/public/es/sdks/nodejs/error-handling#error-table) de la base SDK; lo mismo se aplica aquí porque `@markpdf/react` reexporta las mismas clases.

## Componente de error reutilizable

```tsx theme={null}
import { MarkpdfError } from "@markpdf/sdk";

function ConversionError({ error }: { error: MarkpdfError }) {
  const messages: Record<number, string> = {
    401: "API key invávalida o ausente.",
    413: "The document is too large. Try pages= to split it.",
    422: "Required parameters are missing.",
    429: "Demasiadas peticiones, intenta de nuevo en unos segundos.",
    500: "Conversion error. Try mode: 'balanced'.",
  };

  return <p role="alert">{messages[error.statusCode ?? 0] ?? error.message}</p>;
}
```

<Tip>
  `useConvertFile` no vuelve a intentarlo automáticamente. Si desea reintentos con retroceso en `429`/`5xx`, use el cliente base (`useMarkpdf()`) con `maxRetries`; consulte [Node.js SDK Manejo de errores](/docs/public/es/sdks/nodejs/error-handling#reintentos-automáticos), en lugar de `useConvertFile`, o implemente su propio reintento alrededor de `convert()`.
</Tip>
