Questão nº 40
Questão de Tecnologia da Informação · FCC PGE-AM 2022 (nº 40)
Considere o bloco PHP abaixo.
<?php
function divide($dividendo, $divisor) {
if($divisor == 0) {
throw new Exception("Divisão por zero");
}
return $dividendo / $divisor;
}
echo divide(5, 10);
?>
Caso o segundo parâmetro passado para o método divide seja 0 ao invés de 10, ocorrerá uma exceção. Para tratar adequadamente esta exceção a chamada ao método realizada pelo comando echo divide(5, 10); deverá mudar para
- A
try {echo divide(5,0);} catch(DivisionByZeroException $e) {echo "Impossível dividir.";} - B
try {divide(5,0);} catch(DivisionException $e) {echo "Impossível dividir.";} - C
try {echo divide(5,0);} catch(Exception $e) {finally echo "Impossível dividir.";} - D
try {echo divide(5,0);} catch(Exception $e) {echo "Impossível dividir.";}(alternativa correta) - E
try {divide(5,0);} catch(Exception $e) {printf "Impossível dividir.";}
Resposta comentada
Gabarito Alternativa D
Quando um programa pode encontrar um problema inesperado (uma "exceção"), usamos um bloco try-catch para tentar executar o código (try) e, se houver um erro, "pegar" esse erro (catch) para lidar com ele sem que o programa trave.
- (A) Incorreta: A função
dividelança umaExceptiongenérica, não umaDivisionByZeroException. O blococatchsó pegaria exceções do tipoDivisionByZeroExceptionou de classes filhas dela, mas não aExceptiongenérica lançada. - (B) Incorreta: Similar à alternativa A, a função lança uma
Exceptiongenérica, não umaDivisionException. Além disso, faltaria oechodentro dotrypara exibir o resultado em caso de sucesso. - (C) Incorreta: O
finallyé uma cláusula separada que sempre executa, independentemente de haver exceção ou não. Ele não pode ser usado dentro do blococatchcomo mostrado, resultando em um erro de sintaxe. - (D) Correta: O bloco
trytenta executar a divisão. O blococatch(Exception $e)é o correto, pois a funçãodividelança umaExceptiongenérica. Se a exceção ocorrer, o programa executa o código dentro docatch, exibindo a mensagem de erro. - (E) Incorreta: A função
printfem PHP exige parênteses para seus argumentos (ex:printf("...")). A sintaxeprintf "..."está incorreta, causando um erro de sintaxe.
Fonte: FCC PGE-AM 2022 Técnico em Gestão Procuratorial - Especialidade Engenharia de Software (Caderno Tipo 001). Reproduzida para fins de estudo.