Controle de Erros em JS
Esse necessita de criatividade: controle de erros em JavaScript. Sabe aqueles erros de linguagem que mostram uma mensagem muito bem escrita? E sabe aqueles erros que (para os usuários) parecem inexplicáveis quando eles rodam seus scripts? Podemos transformar a segunda situação na primeira.
Em JavaScript existe um objeto chamado Error, que é obviamente uma mensagem de erro. Essa mensagem pode conter também um número. Veja:
var comNumero = new Error(0, "Erro Desconhecido");
var semNumero = new Error("Erro sem número");
Tá certo, isso não faz sentido. Geralmente eu começo explicando assim, é um vício. Mas as coisas começarão a ficar claras.
Quando criamos nossos scripts (para nosso próprio uso), dificilmente eles funcionarão com erros, pois nós sabemos (ou devíamos) o que o script faz e os erros que podem acontecer se não fizermos. Portanto, não fazemos um controle de erros por que não é necessário. Já se criarmos um script para ser distribuído, o usuário pode não saber exatamente o que acontece, e isso fatalmente resultará em um erro, que poderá ser fatal, fatalmente acabando com os planos do pobre coitado. Talvez o usuário não entenda exatamente o que quer dizer os erros do console, resultando em um pequeno problema.
É pra isso que usamos esse controle de erros. Ele pode prevenir uma entrada de dados errada, uma função com algum parâmetro faltando, essas coisas, fazendo com que o script gere um erro antes, com a mensagem que você deseja, tornando tudo mais claro.
Só que há uma situação atenuante: criando um erro não quer dizer que ele aconteceu. Entretanto podemos fazer isso através da palavra-chave throw.
var erro = new Error("Erro Desconhecido");
throw erro;
Isso, no console do Firefox, resultaria: “Erro Desconhecido [nova linha]throw erro;”, ou coisa parecida. Se tivermos um número de erro, a coisa seria assim: “0 [nova linha]Erro Desconhecido”, onde “0″ é o número do erro.
E como testamos se alguma coisa aconteceu errado? Com if, seria o mais lógico. Mas se quisermos saber quando uma função retornou um erro:
try { funcErro(); }
catch(e) { alert("O erro foi " + e); }
try é o que tentamos. catch é quando dá algo errado, usando geralmente e como erro retornado. Também há o finally, que é executado de qualquer maneira no final disso tudo aí.
Como estava sem nada mais interessante pra fazer, criei o código abaixo para criação e retorno de erros, pra deixar o negócio mais abreviado.
var JsError = {
"Throw": function() {
this.message = arguments[0] || "Erro Desconhecido";
this.number = arguments[1] || 0;
this.error = new Error(this.number, this.message);
throw this.error;
},
"Create": function() {
this.message = arguments[0] || "Erro Desconhecido";
this.number = arguments[1] || 0;
this.error = new Error(this.number, this.message);
return this.error;
}
}
Observação: o número da linha retornado pelo erro é onde o erro foi criado (new Error), e não no throw (pelo menos no Firefox).







Hehe, nem sabia que isso existia em Js! Vlww!!
bem legal…
vlw
Rapá, o Julio é meu herói.
Ótima postagem cara.