apps/docs/content/docs/orm/prisma-client/debugging-and-troubleshooting/handling-exceptions-and-errors.mdx
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.
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
}
Use the Prisma namespace to access the error type. The error code can then be checked and a message can be printed.
import { PrismaPg } from "@prisma/adapter-pg";
import { PrismaClient, Prisma } from "../generated/prisma/client";
const connectionString = `${process.env.DATABASE_URL}`;
const adapter = new PrismaPg({ connectionString });
const prisma = new PrismaClient({ adapter });
try {
await client.user.create({ data: { email: "[email protected]" } });
} 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 for a detailed breakdown of the different error types and their codes.