SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
JavaScript: Erros
Carlos Santos

LabMM 3 - NTC - DeCA - UA

Aula 16, 29-11-2013

(Capítulo 4 do livro Beginning JavaScript)
O meu código não funciona. O que fazer?
• Erros:
• um simples erro pode implicar que todo o código JavaScript não funcione!

• É necessário:
• aprender a detectar os erros para posteriormente os corrigir;

• para isso é importante:

• conhecer os erros mais típicos,

• dominar as ferramentas que nos podem auxiliar na tarefa de debug.
#1. Variáveis não definidas
• definição de variáveis

abc = 23;!
var abc = 23;!
• o que acontece se se utilizar a variável numa instrução sem que esta tenha
sido previamente definida? Exemplos:

alert (abc);!
!

function foo(parametrOne) {!
alert(parameterOne); }
#2. Sensibilidade ao case
• Um erro muito comum e muitas vezes difícil de detectar sem ajuda!

• Onde estão os erros? 

var myName = “Jeremy”;!
If (myName == “jeremy”)!
alert(myName.toUppercase());
#3. Falta fechar uma chaveta! }
• onde está o erro?

function myFunction() {!
x = 1;!
y = 2;!
if (x <= y) {!
if (x == y) {!
alert(“x equals y”); }!
}!
myFunction();!
#3. Falta fechar uma chaveta! }
• mais fácil com indentação?

function myFunction()!
{!
x = 1;!
y = 2;!
if (x <= y)!
{!
if (x == y)!
{!
alert(“x equals y”);!
}!
}!
myFunction();
#4. Falta abrir/fechar os parêntesis! )
• onde está o erro?

if (myVariable + 12) / myOtherVariable < myString.length)
#5. Usar = em vez de ==
• onde está o erro?

var myNumber = 99;!
if (myNumber = 101)!
{!
alert(“myNumber is 101”);!
}!
else!
{!
alert(“myNumber is “ + myNumber);!
}!
#6. Usar um método como propriedade e viceversa
• onde estão os erros?

var nowDate = new Date();!
alert(nowDate.getMonth);!
!
var myString = “Hello, World!”;!
alert(myString.length());!
!
#6. Usar um método como propriedade e viceversa
• É muito importante saber distinguir métodos e propriedades

var nowDate = new Date();!
alert(nowDate.getMonth());!
!
var myString = “Hello, World!”;!
alert(myString.length);!
!
#6. Usar um método como propriedade e viceversa
• Um caso “estranho” e que pode parecer quebrar a regra.

function foo()!
{!
alert(“I’m in foo()!”).!
}!
!
function bar(fpToCall)!
{!
alert(“Calling passed function”).!
fpToCall();!
}!
!
bar(foo);
#7. Faltar sinal de “+” na concatenação de strings
• Onde está o erro?

var myName = “Jeremy”;

var myString = “Hello”;

var myOtherString = “World”;

myString = myName + “ said “ + myString + “ “ myOtherString;!
alert(myString);!
#7. Faltar sinal de “+” na concatenação de strings
• Onde está o erro?

var myName = “Jeremy”;

var myString = “Hello”;

var myOtherString = “World”;

myString = myName+“ said “+myString + “ “ + myOtherString;!
alert(myString);!
Prevenir erros
• Experimentar o código em todos os browsers que devem ser suportados
pela aplicação:
• IE 6???

• IE 7 != IE 8 != IE 9… (e mesmo os modos de para emular os browsers não
são exatamente iguais...)

• Safari... o novo IE? :(

• Validar toda a informação introduzida pelo utilizador

• Mesmo assim, podem acontecer situações imprevisíveis que, por exemplo,
podem depender das condições de rede de um determinado utilizador...
try...catch
• funcionam em conjunto e permite intersectar erros de execução e lidar
com eles de forma apropriada.
<script type=”text/javascript”>!
try

{!
alert(‘This is code inside the try clause’);!
alert(‘No Errors so catch code will not execute’);!
}!
catch(exception)!
{!
alert(“The error is “ + exception.message);!
}!
</script>
debugging
• sem uma ferramenta de debug apropriada, a melhor estratégia é utilizar
métodos para gerar mensagens a informar, por exemplo, do valor de
determinadas variáveis (alerts ou console.log).

• o alert() também pode ser utilizado para ter a certeza se um determinado
script ou condição está a ser executado.

• felizmente não faltam ferramentas adequadas nos browsers atuais:

• Firefox firebug

• Safari Web Inspector

• Chrome developer tools

• Opera Dragonfly

• IE developer tools
debugging: principais funcionalidades
• Breakpoints

• Watches

• Seguir o código passo-a-passo

• Consola

• Stack Window

Weitere ähnliche Inhalte

Ähnlich wie T17_LM3: Erros/Debug (2013-2014)

TDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para TestersTDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para TestersStefan Teixeira
 
Google android p/ Noobs - SUPER 2014 - UPE
Google android p/ Noobs - SUPER 2014 - UPEGoogle android p/ Noobs - SUPER 2014 - UPE
Google android p/ Noobs - SUPER 2014 - UPELevi Saturnino
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011Leonardo Balter
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java IVerônica Veiga
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de softwarericardophp
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Inael Rodrigues
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosArthur Emanuel
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: ExceçõesEduardo Mendes
 

Ähnlich wie T17_LM3: Erros/Debug (2013-2014) (20)

TDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para TestersTDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para Testers
 
Google android p/ Noobs - SUPER 2014 - UPE
Google android p/ Noobs - SUPER 2014 - UPEGoogle android p/ Noobs - SUPER 2014 - UPE
Google android p/ Noobs - SUPER 2014 - UPE
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Fascículo1java
Fascículo1javaFascículo1java
Fascículo1java
 
WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
Java7 tdc2011
Java7 tdc2011Java7 tdc2011
Java7 tdc2011
 
Minicurso php
Minicurso phpMinicurso php
Minicurso php
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Aula 1 2
Aula 1 2Aula 1 2
Aula 1 2
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
Debugging node
Debugging nodeDebugging node
Debugging node
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: Exceções
 
Debug Otimizado
Debug OtimizadoDebug Otimizado
Debug Otimizado
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 

Mehr von Carlos Santos

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?Carlos Santos
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesCarlos Santos
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEduCarlos Santos
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialCarlos Santos
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosCarlos Santos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosCarlos Santos
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Carlos Santos
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoCarlos Santos
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Carlos Santos
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentCarlos Santos
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusCarlos Santos
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectCarlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoCarlos Santos
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCACarlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidCarlos Santos
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoCarlos Santos
 
T14_LM3: Animação (2013-2014)
T14_LM3: Animação (2013-2014)T14_LM3: Animação (2013-2014)
T14_LM3: Animação (2013-2014)Carlos Santos
 

Mehr von Carlos Santos (20)

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantes
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEdu
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicial
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho prático
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning Environment
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus project
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
 
T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
T14_LM3: Animação (2013-2014)
T14_LM3: Animação (2013-2014)T14_LM3: Animação (2013-2014)
T14_LM3: Animação (2013-2014)
 

T17_LM3: Erros/Debug (2013-2014)

  • 1. JavaScript: Erros Carlos Santos LabMM 3 - NTC - DeCA - UA Aula 16, 29-11-2013 (Capítulo 4 do livro Beginning JavaScript)
  • 2. O meu código não funciona. O que fazer? • Erros: • um simples erro pode implicar que todo o código JavaScript não funcione! • É necessário: • aprender a detectar os erros para posteriormente os corrigir; • para isso é importante: • conhecer os erros mais típicos, • dominar as ferramentas que nos podem auxiliar na tarefa de debug.
  • 3. #1. Variáveis não definidas • definição de variáveis abc = 23;! var abc = 23;! • o que acontece se se utilizar a variável numa instrução sem que esta tenha sido previamente definida? Exemplos: alert (abc);! ! function foo(parametrOne) {! alert(parameterOne); }
  • 4. #2. Sensibilidade ao case • Um erro muito comum e muitas vezes difícil de detectar sem ajuda! • Onde estão os erros? var myName = “Jeremy”;! If (myName == “jeremy”)! alert(myName.toUppercase());
  • 5. #3. Falta fechar uma chaveta! } • onde está o erro? function myFunction() {! x = 1;! y = 2;! if (x <= y) {! if (x == y) {! alert(“x equals y”); }! }! myFunction();!
  • 6. #3. Falta fechar uma chaveta! } • mais fácil com indentação? function myFunction()! {! x = 1;! y = 2;! if (x <= y)! {! if (x == y)! {! alert(“x equals y”);! }! }! myFunction();
  • 7. #4. Falta abrir/fechar os parêntesis! ) • onde está o erro? if (myVariable + 12) / myOtherVariable < myString.length)
  • 8. #5. Usar = em vez de == • onde está o erro? var myNumber = 99;! if (myNumber = 101)! {! alert(“myNumber is 101”);! }! else! {! alert(“myNumber is “ + myNumber);! }!
  • 9. #6. Usar um método como propriedade e viceversa • onde estão os erros? var nowDate = new Date();! alert(nowDate.getMonth);! ! var myString = “Hello, World!”;! alert(myString.length());! !
  • 10. #6. Usar um método como propriedade e viceversa • É muito importante saber distinguir métodos e propriedades var nowDate = new Date();! alert(nowDate.getMonth());! ! var myString = “Hello, World!”;! alert(myString.length);! !
  • 11. #6. Usar um método como propriedade e viceversa • Um caso “estranho” e que pode parecer quebrar a regra. function foo()! {! alert(“I’m in foo()!”).! }! ! function bar(fpToCall)! {! alert(“Calling passed function”).! fpToCall();! }! ! bar(foo);
  • 12. #7. Faltar sinal de “+” na concatenação de strings • Onde está o erro? var myName = “Jeremy”;
 var myString = “Hello”;
 var myOtherString = “World”;
 myString = myName + “ said “ + myString + “ “ myOtherString;! alert(myString);!
  • 13. #7. Faltar sinal de “+” na concatenação de strings • Onde está o erro? var myName = “Jeremy”;
 var myString = “Hello”;
 var myOtherString = “World”;
 myString = myName+“ said “+myString + “ “ + myOtherString;! alert(myString);!
  • 14. Prevenir erros • Experimentar o código em todos os browsers que devem ser suportados pela aplicação: • IE 6??? • IE 7 != IE 8 != IE 9… (e mesmo os modos de para emular os browsers não são exatamente iguais...) • Safari... o novo IE? :( • Validar toda a informação introduzida pelo utilizador • Mesmo assim, podem acontecer situações imprevisíveis que, por exemplo, podem depender das condições de rede de um determinado utilizador...
  • 15. try...catch • funcionam em conjunto e permite intersectar erros de execução e lidar com eles de forma apropriada. <script type=”text/javascript”>! try
 {! alert(‘This is code inside the try clause’);! alert(‘No Errors so catch code will not execute’);! }! catch(exception)! {! alert(“The error is “ + exception.message);! }! </script>
  • 16. debugging • sem uma ferramenta de debug apropriada, a melhor estratégia é utilizar métodos para gerar mensagens a informar, por exemplo, do valor de determinadas variáveis (alerts ou console.log). • o alert() também pode ser utilizado para ter a certeza se um determinado script ou condição está a ser executado. • felizmente não faltam ferramentas adequadas nos browsers atuais: • Firefox firebug • Safari Web Inspector • Chrome developer tools • Opera Dragonfly • IE developer tools
  • 17. debugging: principais funcionalidades • Breakpoints • Watches • Seguir o código passo-a-passo • Consola • Stack Window