# Handling exceptions and errors (/docs/orm/v6/prisma-client/debugging-and-troubleshooting/handling-exceptions-and-errors)

Location: ORM > v6 > Prisma Client > Debugging and Troubleshooting > Handling exceptions and errors

In order to handle different types of errors you can use `instanceof` to check what the error is and handle it accordingly.

The following example tries to create a user with an already existing email record. This will throw an error because the `email` field has the `@unique` attribute applied to it.

```prisma title="schema.prisma" showLineNumbers
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
}
```

Use the `Prisma` namespace to access the error type. The [error code](/orm/v6/reference/error-reference#error-codes) can then be checked and a message can be printed.

```ts
import { PrismaClient, Prisma } from "@prisma/client";

const client = new PrismaClient();

try {
  await client.user.create({ data: { email: "alreadyexisting@mail.com" } });
} catch (e) {
  if (e instanceof Prisma.PrismaClientKnownRequestError) {
    // The .code property can be accessed in a type-safe manner
    if (e.code === "P2002") {
      console.log(
        "There is a unique constraint violation, a new user cannot be created with this email",
      );
    }
  }
  throw e;
}
```

See [Errors reference](/orm/v6/reference/error-reference) for a detailed breakdown of the different error types and their codes.

## Related pages

- [`Debugging`](https://www.prisma.io/docs/orm/v6/prisma-client/debugging-and-troubleshooting/debugging): This page explains how to enable debugging output for Prisma Client by setting the `DEBUG` environment variable.
- [`Troubleshooting binary size and deployment issues`](https://www.prisma.io/docs/orm/v6/prisma-client/debugging-and-troubleshooting/troubleshooting-binary-size-issues): This page covers how to resolve large bundle sizes, slow builds, and deployment errors caused by Prisma ORM Rust engine binaries