O depurador do ABAP sempre me surpreende com uma nova funcionalidade toda vez que engasgo com o café e esbarro sem querer no mouse, fazendo-o clicar aleatóriamente em algum canto do depurador.
Desta vez descobri o botão , que permite descobrir onde o objeto de exceção foi criado através do comando
RAISE EXCEPTION
.
Este botão aparece apenas para objetos de exceção, na aba principal Objetos, e então em Exibição individual.
É possível usar o menu de depuração para colocar pontos de parada nestas instruções, mas se eu já sei onde do programa Z a exceção é capturada, pode a partir deste ponto ir voltando relativamente no tempo e ver em qual linha cada exceção foi lançada.
Se você, assim como a platéia do Sílvio Santos, só acredita vendo, copie este report e veja a mágica acontecer.
Duas exceções são lançadas e encadeadas, e o debugger mostrará exatamente onde o crimecada exceção aconteceu.
Infelizmente esta forma não permite visualizar os valores das variáveis naquele trecho que o RAISE EXCEPTION
foi executado após ter saído de lá, mas isto também ocorre com as exceções clássicas e exceções de módulos de função.
A exceção mais recente (primeira da cadeia, a última lançada) | A exceção mais antiga (última da cadeia, a primeira lançada) |
---|---|
![]() |
![]() |
Lembra daqueles TRY/CATCH
sem nenhum tratamento e muito menos um INTO
que você já ousou a colocar no código só por ser dia de maldade?
Pois então, agora tem (mais) um motivo para abandonar esta má prática e fazer melhor.