Questão nº 39

Questão de Tecnologia da Informação · FCC TRT-12 2023 (nº 39)

FCC2023Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Dver comentário ↓

Considere os programas em C# e em PHP a seguir:

C#:

using System;
namespace TratamentoExcecao {
    class Program {
        static void Main(string[] args) {
            try{ double num = 10;
                double den = 0;
                double r = FazDivisao(num, den);
                Console.WriteLine($"Resultado da divisão: {r}");
            }
            catch (DivideByZeroException ex) {
                Console.WriteLine($"Erro: {ex.Message}");
            }
            catch (Exception ex) {
                Console.WriteLine($"Erro desconhecido: {ex.Message}");
            }

        }

        static double FazDivisao(double n, double d)  {
            if (d == 0) {
              I
              ......
            }
            return n / d;
        }

    }
}

PHP:

<?php
function divide($a, $b) {
    if ($b === 0) {
        II
        ......
    }
    return $a / $b;
}

try {
    $num1 = 10;
    $num2 = 0;

    $resultado = divide($num1, $num2);
    echo "O resultado da divisão é: " . $resultado;
} catch (Exception $e) {
    echo "Erro: " . $e->getMessage();
}
?>

Em condições ideais, para que cada um dos programas possa ser executado fazendo o tratamento de exceção relativo à divisão e sejam impressas as frases exatamente iguais, as lacunas I e II devem ser corretamente preenchidas com:

Resposta comentada

Gabarito Alternativa D

Tratamento de Exceções é um mecanismo usado em programação para lidar com situações inesperadas (erros) que podem ocorrer durante a execução de um programa, como tentar dividir um número por zero. Ele permite que o programa reaja a esses erros de forma controlada, em vez de simplesmente parar.

  • (A) Incorreta: A Lacuna II usa Exception_DivideByZero, que não é uma classe de exceção padrão no PHP. Para que o código PHP funcione sem a necessidade de definir uma nova classe, é preciso usar uma exceção padrão.
  • (B) Incorreta: A Lacuna I usa Exception genérica. Embora funcione, o C# possui uma exceção mais específica (DivideByZeroException) para esse cenário, e o bloco catch no C# está configurado para capturar essa exceção específica primeiro. Usar a exceção genérica faria com que ela fosse capturada pelo catch (Exception ex) genérico, e não pelo mais específico.
  • (C) Incorreta: A Lacuna II usa DivideByZeroException, que não é uma classe de exceção padrão no PHP. No PHP, para lançar uma exceção genérica ou para uma condição específica sem definir uma nova classe, usa-se Exception. Armadilha da banca: Esta alternativa é tentadora porque DivideByZeroException parece semanticamente correta para ambos os casos, mas não é uma classe padrão no PHP, o que a torna incorreta para a Lacuna II.
  • (D) Correta: A Lacuna I preenche corretamente o C# com throw new DivideByZeroException("Divisão por zero não é válida.");. Esta é a exceção específica e idiomática para divisão por zero em C#, e será capturada pelo bloco catch (DivideByZeroException ex). A Lacuna II preenche corretamente o PHP com throw new Exception("Divisão por zero não é válida.");. No PHP, Exception é a classe base para todas as exceções e é a forma padrão de lançar uma exceção genérica que será capturada pelo catch (Exception $e). Ambas as escolhas garantem que as mensagens de erro sejam impressas conforme desejado.
  • (E) Incorreta: A Lacuna I usa Exception genérica em C#, o que não é o ideal quando há uma exceção mais específica (DivideByZeroException) disponível e um bloco catch configurado para ela. A Lacuna II usa DivideByZeroException em PHP, que não é uma classe padrão.

Fonte: FCC TRT-12 2023 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 003). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho