Precisa de um freelancer, códigos-fonte e exemplos completos? Bem-vindo(a) ao meu site. Além de realizar alguns serviços como freelancer eu tenho alguns códigos-fonte e exemplos completos de Java, Delphi, PHP, Python, C/C++, Hibernate, JPA, Spring, JSP, Servlets, Ruby, Ruby On Rails e muitas outras linguagens e frameworks. Veja como falar comigo clicando aqui.
Tratamento de Erros e Técnicas
de Detecção de Browsers :: Aprenda a atirar suas
próprias exceções em JavaScript
O termo "atirar uma exceção"
é muito conhecido pelos programadores Java, uma vez que
o mecanismo existente em JavaScript é bem parecido com
aquele da linguagem Java. "Atirar uma exceção"
significa a criação de um objeto que representa
o tipo de erro a ser tratado. É importante notar que,
o restante do código do bloco em que a exceção
é atirada nunca será executado. Vamos ver um exemplo:
<html>
<head>
<title>Tratamento de erros</title>
</head>
<body>
<script language="javascript">
<!--
function MailFormatoException(mail){
this.email = mail;
this.mensagem = "não é
um endereço de e-mail válido.";
this.toString = function(){
return this.email + "
" + this.mensagem;
};
}
function validarEMail(email){
if(email.indexOf("@") >
-1){
return true;
}
else{
throw new MailFormatoException(email);
}
}
try{
var mail = "suporte.recomende.com";
var valido = validarEMail(mail);
if(valido){
window.alert("Endereço
de e-mail válido.");
}
}
catch(e){
window.alert(e);
}
//-->
</script>
</body>
</html>
Execute esta página e verá uma mensagem de erro
com o seguinte texto:
suporte.recomende.com
não é um endereço de e-mail válido.
O código para este exemplo é um daqueles que só
pode ser entendido quando analisado com muita atenção.
Comecemos com o objeto MailFormatoException:
function MailFormatoException(mail){
this.email = mail;
this.mensagem = "não é um endereço
de e-mail válido.";
this.toString = function(){
return this.email + " " +
this.mensagem;
};
}
Veja que sempre que uma nova instancia deste objeto é
criado, nós fazemos o fornecimento de um valor para o
argumento mail. Este valor é usado para
inicializar a propriedade email do objeto:
this.email = mail;
Como este objeto será usado para indicarmos situações
de erro, é mais que adequado que ele possua uma propriedade
para esta finalidade. Esta propriedade se chama mensagem
e é inicializada na linha:
this.mensagem
= "não é um endereço de e-mail válido.";
Finalmente, o objeto deverá ter um método toString,
que é chamado automaticamente sempre que o método
para o qual o objeto estiver sendo fornecido, retornar um valor
do tipo String. Veja como este método
retorna uma concatenação das propriedades email
e mensagem:
Veja agora o código para uma função que
verifica se um determinado endereço de e-mail é
válido:
function
validarEMail(email){
if(email.indexOf("@") > -1){
return true;
}
else{
throw new MailFormatoException(email);
}
}
A validação deste endereço de e-mail é
bem simples. Tudo que fazemos é verificar a ocorrência
do símbolo @ no endereço. Se você quiser
aprender a fazer validações mais avançadas,
clique aqui e acesse nosso tutorial sobre Expressões
Regulares em JavaScript.
Veja que, se o endereço de e-mail for válido nós
simplesmente retornamos um valor true para
o chamador da função. Se o valor não for
válido nós usamos a instrução throw
para criar uma instancia do objeto MailFormatoException
e fornecemos o valor de email sendo validado. Neste ponto quaisquer
outras linhas de código dentro desta função
não mais seriam executados. A execução
do código volta para o ponto onde a função
validarEMail foi chamada.
Observe agora o código para o bloco try...catch:
try{
var mail = "suporte.recomende.com";
var valido = validarEMail(mail);
if(valido){
window.alert("Endereço de
e-mail válido.");
}
}
catch(e){
window.alert(e);
}
Na primeira linha do bloco try nós criamos
uma variável chamada mail e atribuímos
a ela o endereço de e-mail a ser validado. Em seguida
criamos uma variável chamada valido
e atribuímos a ela o resultado de uma chamada à
função validarEMail fornecendo
o endereço a ser verificado. É aqui que as coisas
acontecem, se a função retornar true, o restante
do bloco try é executado. Ao contrário,
se o resultado for uma instancia do objeto MailFormatoException,
a execução salta diretamente do bloco try
para o bloco catch. Tudo que temos a fazer
é exibir as informações do erro:
catch(e){
window.alert(e);
}
Lembre-se de que a variável "e" representa
o objeto MailFormatoException. Como o método
alert do objeto window retorna
um tipo String, o método toString
de nosso objeto é chamado implicitamente e temos o resultado
que esperávamos.
Todo o conteúdo deste site,
quando não devidamente observado, pertence a seus idealizadores
e não
poderá ser usado para outras finalidades senão estudo e
aprimoramento de técnicas de programação.
Certifique-se de ler asnotas legaisantes de proceder com
o acesso e leitura do
conteúdo disponibilizado nestas páginas.