Analise o script a seguir.<p id="demo"></p> <...
Analise o script a seguir.
<p id="demo"></p>
<script>
try {
a = 10/0;
document.getElementById("demo").innerHTML = "OK";
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
A execução desse script produz
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - a exibição de “OK” no parágrafo.
Para resolver essa questão, é necessário compreender o conceito de tratamento de exceções em JavaScript, através das estruturas try e catch. O bloco try é utilizado para embrulhar o código que pode lançar uma exceção, enquanto o bloco catch é usado para capturar e tratar qualquer erro que ocorra dentro do bloco try.
O script analisado contém uma operação que divide o número 10 por 0. Em JavaScript, essa operação não gera um erro, mas sim retorna o valor especial Infinity, que representa o infinito matemático. Como essa operação não é uma exceção, o código dentro do bloco try é executado sem problemas, e a linha document.getElementById("demo").innerHTML = "OK"; é alcançada e executada, alterando o conteúdo do elemento HTML identificado por demo para a string "OK".
Portanto, a execução desse script resultará na exibição de “OK” no parágrafo, como mencionado na alternativa C, que é a resposta correta.
As demais alternativas são incorretas porque:
- A - Não há erro de sintaxe no script fornecido.
- B - Não ocorre um erro de execução, pois a divisão por zero é tratada normalmente em JavaScript.
- D - Uma mensagem de erro não é exibida, pois não há um erro para ser capturado pelo bloco catch.
- E - Ainda que o resultado da operação seja Infinity, o script foi programado para exibir "OK".
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Qual a alternativa correta?
Em javascript, divisão de um número (diferente de 0) por 0 dá Infinity (ou -Infinity se negativo). Ou seja, não é lançada exceção.
Curiosidade: 0/0 resulta em NaN (Not A Number).
ocorre a exibição de ok, letra c
Das linguagens mais usadas, só Javascript e R aceitam divisão por zero. O restante gera erro
como o javascript nao considera divisao por 0 um erro, nao cai no erro do try {} catch(err).
por isso resulta em "ok"
se fizer um console log, resulta em "Infinity".
let b = 10/0;
console.log(b);
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo