Resposta correta: C) Erro crítico impede a continuação da execução (ex.: divisão por zero); erro lógico permite a execução, mas produz resultado incorreto.
Erros críticos lançam exceções que interrompem o programa, enquanto erros lógicos resultam em saídas inesperadas sem interromper a execução.
def h(n):
return 10 / (n - 2)
def g(n):
return h(n - 1)
def f(n):
return g(n - 1)
f(4)
Qual será a primeira linha onde o depurador deve parar (breakpoint) para identificar a origem da ZeroDivisionError?
Resposta correta: A) Na linha return 10 / (n - 2) dentro de h.
O erro ocorre quando n vale 2 dentro de h. Colocando o breakpoint nessa linha permite observar o valor de n antes da divisão.
n antes da exceção, sem entrar nas chamadas de função internas?
def h(n):
print("start H")
print(1 / n) # pode gerar divisão por zero
print(n)
def g(n):
print("start G")
h(n-1)
print(n)
def f(n):
print("start F")
g(n-1)
print(n)
f(2)
Resposta correta: C) Breakpoint em h, Step Over até a linha da divisão, observar n
Colocando o breakpoint exatamente na função que gera a exceção e usando Step Over permite avançar até a instrução problemática mantendo o valor de n visível.
n nunca será zero antes da divisão. Qual das alternativas abaixo descreve a melhor estratégia usando recursos do depurador?
Resposta correta: A) Inserir um breakpoint condicional em h com a condição n == 0 e, ao disparar, alterar n para 1.
Um breakpoint condicional permite interromper a execução somente quando a condição problemática ocorre, possibilitando a correção imediata do valor sem precisar modificar o código fonte.