Considere o seguinte código escrito na linguagem PHP.<?ph...

Próximas questões
Com base no mesmo assunto
Q1836568 Programação
Considere o seguinte código escrito na linguagem PHP. <?php function inversa($x) {     if ($x==0) {      throw new Exception(' exception ');   }    return 1/$x; } try   {      echo inversa(0);      echo " try "; } catch (Exception $e) {      echo " catch ";      echo $e->getMessage(); } finally {      echo " finally "; } Ao se executar esse código, será impressa na tela a seguinte sequência de palavras:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - catch exception finally

O código apresentado é um exemplo clássico de manipulação de exceções na linguagem PHP. O tema central é o tratamento de exceções usando os blocos try, catch e finally. Para resolver essa questão, é necessário compreender como esses blocos interagem entre si e o fluxo de execução quando uma exceção é lançada.

No código, temos uma função chamada inversa que recebe um argumento $x. Se $x for igual a zero, a função lança uma exceção para evitar a divisão por zero, que é uma operação indefinida. Caso contrário, ela retorna o valor da inversa multiplicativa de $x, ou seja, 1/$x.

O bloco try executa o código que pode potencialmente lançar uma exceção. Se uma exceção é lançada, a execução do bloco try é interrompida imediatamente e o controle é passado para o primeiro bloco catch correspondente capaz de tratar essa exceção. No bloco catch, é possível executar código que gerencia a exceção lançada.

O bloco finally é opcional e será executado independentemente de uma exceção ser lançada ou não, ou seja, ele é usado para executar código que deve ser executado após a tentativa de execução do bloco try, mesmo que uma exceção seja capturada ou não.

Quando a função inversa é chamada com o valor 0, uma exceção é lançada. A execução do bloco try é então interrompida antes de imprimir "try" e o controle é passado ao bloco catch. Dentro do bloco catch, a mensagem "catch" é impressa seguida pela mensagem da exceção, que é "exception". Após o bloco catch, o bloco finally é executado, imprimindo "finally".

Portanto, a sequência de palavras impressa na tela será "catch exception finally".

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

Quando ocorre uma exceção X dentro da cláusula try, o fluxo natural do código é imediatamente interrompido e, em seguida, continuado na cláusula catch que trata X. O finally será posteriormente executado independente de existir exceção ou não.

 

echo inversa(0); -> Vai lançar a exceção dentro do IF e ir direto para a cláusula catch sem imprimir nada

echo " catch " -> Imprime " catch "

echo $e->getMessage(); -> Imprime ' exception '

echo " finally "; -> Imprime " finally "

 

GAB C

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo