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.

schema.prisma
1model User {
2 id Int @id @default(autoincrement())
3 email String @unique
4 name String?
5}

Use the Prisma namespace to access the error type. The error code can then be checked and a message can be printed.

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 for a detailed breakdown of the different error types and their codes.