Considere os programas em C# e em PHP a seguir:C#using Syste...

Próximas questões
Com base no mesmo assunto
Q2635559 Arquitetura de Software

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:

Alternativas

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 bloco catch 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érica Exception 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 usar DivideByZeroException.
  • 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