Considere os programas em C# e em PHP a seguir:C#using Syste...
Considere os programas em C# e em PHP a seguir:
C# using System; namespace TratamentoExcecao ( class Program ( static void Main(:string[] arqs) ( try( double num = 10; double den = 0; double r = FazDivisao(num, den); Console.WriteLine($"Resultado da divisao: {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) (
} return n / d; } } } |
PHP <?php function divide($a, $b) { if ($b === 0) {
} 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:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Tema Central: A questão aborda o tratamento de exceções em linguagens de programação, especificamente C# e PHP. A compreensão desse tema é essencial para evitar falhas críticas em aplicações, garantindo que o software lide adequadamente com erros, como a divisão por zero.
Resumo Teórico: Em programação, exceções são eventos que alteram o fluxo normal de execução de um programa, geralmente devido a erros. Em C#, a exceção DivideByZeroException
é lançada quando uma divisão por zero é tentada. Em PHP, o tratamento de exceções é feito usando a estrutura try-catch
, e uma exceção genérica pode ser lançada com throw
.
Justificativa da Alternativa Correta (Alternativa C): Para que os programas em C# e PHP tratem a exceção de divisão por zero e imprimam mensagens iguais, as lacunas devem ser preenchidas da seguinte forma:
- Lacuna I (C#):
throw new DivideByZeroException("Divisão por zero não é válida.");
- Isso garante que uma exceção específica para divisão por zero seja lançada, permitindo que o blococatch
apropriado a capture. - Lacuna II (PHP):
throw new Exception("Divisão por zero não é válida.");
- PHP não possui um tipo de exceção nativo específico para divisão por zero, então usamos uma exceção genéricaException
para lançar o erro.
Análise das Alternativas Incorretas:
- Alternativa A: Usa
throw new Exception
para ambas as lacunas, o que não captura adequadamente a exceção específica em C#, onde é mais apropriado usarDivideByZeroException
. - Alternativa B: Tenta usar
throw new DivideByZeroException
em PHP, mas essa exceção não existe nativamente em PHP. - Alternativa D: Mistura a abordagem correta para PHP com uma abordagem genérica para C#, o que não trata corretamente a especificidade de exceções em C#.
- Alternativa E: Introduz uma exceção
Exception_DivideByZero
que não é uma classe padrão em PHP, tornando a solução impraticável.
Conclusão: A alternativa C é a correta, pois usa as exceções apropriadas para cada linguagem, garantindo que o tratamento de erro seja consistente e eficiente.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo