Tratamento de Erros
Try/Catch - Tratamento de Erro com throw
async allUsers(): Promise<User[]> {
try{
const query = `SELECT uuid, userName FROM users`;
const { rows } = await db.query<User>(query);
return rows || [];
} catch (error) {
console.log('ERRO: ', error);
throw error;
}
}
Try/Catch - Tratamento de Erro com a classe DatabaseError
A classe DatabaseError em src/models/errors/database.error.model.ts irá extender da classe Error
class DatabaseError extends Error {
constructor(public message: string, public error?: any) {
super(message);
}
}
export default DatabaseError;
Utilização: Necessário importar a classe DatabaseError em src/repositories/user.repository.ts
async allUsers(): Promise<User[]> {
try{
const query = `SELECT uuid, userName FROM users`;
const { rows } = await db.query<User>(query);
return rows || [];
} catch (error) {
console.log('ERRO: ', error);
throw new DatabaseError('Erro na consulta por ID', error);
}
}
Utilização: Necessário importar a classe DatabaseError em src/routes/users.route.ts
usersRoute.get('/users', async (req: Request, res: Response, next: NextFunction) => {
try{
const users = await userRepository.allUsers();
res.status(StatusCodes.OK).json(users);
}catch(error){
console.log('ERRO: ', error);
if(error instanceof DatabaseError){
res.send(StatusCodes.BAD_REQUEST);
}else{
res.send(StatusCodes.INTERNAL_SERVER_ERROR);
}
}
});