Cursos / Eletrônica / Programação Orientada a Objetos / Aula

arrow_back Aula 10 - Tratamento de Erros

Prática: Membros estáticos e Tratamento de erros

Expressões Regulares

Expressões Regulares - Clique aqui!

Classe Usuário

import { EmailInvalidoError } from "./errors/emailinvalidoerror";
import { NomeInvalidoError } from "./errors/nomeinvalidoerror";

export class Usuario{

    public email: string;
    public nome: string;

    private constructor(email: string, nome: string){
        this.email = email;
        this.nome = nome;
    }

    public static criarUsuario(email: string, nome: string): Usuario{

        //teste para validar o email
        if(!this.emailInvalido(email)){
            // lançar uma exceção
            throw new EmailInvalidoError();
        }

        //teste para validar o nome

        if(!this.nomeInvalido(nome)){
            // lançar uma exceção
            throw new NomeInvalidoError();
        }

        return new Usuario(email,nome);
    }

    private static emailInvalido(email: string):boolean{

        let emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

        return emailRegex.test(email);

    }

    private static nomeInvalido(nome: string){

        if(nome.length > 10 || nome == ""){
            return false;
        }

        return true;

    }

}

Classe EmailInvalidoError

export class EmailInvalidoError implements Error{

    name: string;
    message: string;

    public constructor(){
        this.name = "EmailInvalidoError";
        this.message = "Email inválido";
    }

    toString():string{
        return `${this.name} : ${this.message} `
    }

}

Classe NomeInvalidoError

export class NomeInvalidoError implements Error{

    name: string;
    message: string;

    public constructor(){
        this.name = "NomeInvalidoError";
        this.message = "Nome inválido";
    }

    toString():string{
        return `${this.name} : ${this.message} `
    }

}

Versão 5.3 - Todos os Direitos reservados