Exception Filters
NestJS exception filters catch and transform errors thrown during tRPC procedure execution.
Usage
import { UseFilters } from '@nestjs/common';
import { Mutation, Router } from 'nest-trpc-native';
@Router('users')
@UseFilters(RemapBadRequestFilter)
class UsersRouter {
@Mutation()
create(@Input() input: { name: string }) {
// If this throws, the filter handles it
return this.usersService.create(input);
}
}
Example: Remap BadRequestException
import {
ArgumentsHost,
BadRequestException,
Catch,
ExceptionFilter,
} from '@nestjs/common';
import { TRPCError } from '@trpc/server';
@Catch(BadRequestException)
export class RemapBadRequestFilter implements ExceptionFilter {
catch(exception: BadRequestException, host: ArgumentsHost) {
const response = exception.getResponse();
throw new TRPCError({
code: 'BAD_REQUEST',
message:
typeof response === 'string'
? response
: (response as any).message ?? 'Bad request',
});
}
}
Method-Level Filters
@Router('users')
class UsersRouter {
@Mutation()
@UseFilters(RemapBadRequestFilter)
create(@Input() input: { name: string }) {
return this.usersService.create(input);
}
}
tip
Exception filters can catch specific exception types using @Catch(ExceptionType) and transform them into appropriate tRPC errors.