Exercícios Resolvidos de Tratamento de Exceções

Ver Teoria

Enunciado

Encontre o erro na seguinte estrutura de tratamento de erro:

Passo 1

Eai, tudo beleza?

Inicialmente, vamos entender o código que nos foi passado. Nele há uma função d i v i s a o . Vamos analisar o que essa função faz. Ela inicia checando se o valor b é nulo, caso ele seja, ela aciona um t h r o w com a mensagem “Tentativa de dividir por 0”. Caso não seja, ela vai retornar a divisão entre os valores passados como argumentos.

Na função m a i n , existe um bloco de t r y e, dentro desse bloco, há a chamada da função d i v i s a o com a passagem dos valores 1 e 0 como argumentos. Após esse bloco, há um bloco de c a t c h , que recebe um inteiro i como argumento e imprime uma mensagem de erro.

Passo 2

Agora, vamos analisar o que esse programa está fazendo de fato. Ao enviar os valores 1 e 0 como argumentos para a função d i v i d i r , o parâmetro a vai assumir o valor 1 enquanto o b vai assumir o valor 0 . Dentro da função, vai haver a análise do valor de b e o t h r o w será acionado.

Após um t h r o w ser acionado, é necessário que uma a exceção seja capturada por um bloco de c a t c h . No entanto, esse t h r o w está enviando um dado do tipo c o n s t   c h a r * , enquanto o único c a t c h do código é feito para receber um inteiro, ou seja, esse c a t c h não vai capturar a exceção enviada!

Para que isso funcionasse, seria necessário que esse c a t c h recebesse um c o n s t   c h a r * ou que o t h r o w enviasse um inteiro.

Resposta

Ei, a resposta está no passo a passo :)