# Error handling (/docs/template/error-handling)

<!-- agent-signals: reading_time_min: 1 · est_tokens: 378 · updated: 2026-07-30 -->
Related: [Quickstart](/docs/template/quickstart.md), [How it works](/docs/template/how-it-works.md), [User and workdir](/docs/template/user-and-workdir.md), [Caching](/docs/template/caching.md), [Base image](/docs/template/base-image.md), [Private registries](/docs/template/private-registries.md)

The SDK provides specific error types:

<CodeGroup>
  <CodeBlockTabs defaultValue="JavaScript & TypeScript" groupId="javascript-typescript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="JavaScript & TypeScript">
        JavaScript & TypeScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="JavaScript & TypeScript">
      ```typescript  
      import { AuthError, BuildError, FileUploadError } from 'e2b';

      try {
        await Template.build(template, 'my-template');
      } catch (error) {
        if (error instanceof AuthError) {
          console.error("Authentication failed:", error.message);
        } else if (error instanceof FileUploadError) {
          console.error("File upload failed:", error.message);
        } else if (error instanceof BuildError) {
          console.error("Build failed:", error.message);
        }
      }
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Python">
      ```python  
      from e2b import AuthError, BuildError, FileUploadError

      try:
          Template.build(template, 'my-template')
      except AuthError as error:
          print(f"Authentication failed: {error}")
      except FileUploadError as error:
          print(f"File upload failed: {error}")
      except BuildError as error:
          print(f"Build failed: {error}")
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>
