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 . Vamos analisar o que essa função faz. Ela inicia checando se o valor b é nulo, caso ele seja, ela aciona um 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 , existe um bloco de e, dentro desse bloco, há a chamada da função com a passagem dos valores e como argumentos. Após esse bloco, há um bloco de , que recebe um inteiro 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 e como argumentos para a função , o parâmetro vai assumir o valor enquanto o vai assumir o valor . Dentro da função, vai haver a análise do valor de e o será acionado.
Após um ser acionado, é necessário que uma a exceção seja capturada por um bloco de . No entanto, esse está enviando um dado do tipo , enquanto o único do código é feito para receber um inteiro, ou seja, esse não vai capturar a exceção enviada!
Para que isso funcionasse, seria necessário que esse recebesse um ou que o enviasse um inteiro.
Resposta
Ei, a resposta está no passo a passo :)