Guias categoria_guias

Published on December 12th, 2011 | by Mauricio Cruz

3

ABAPZombie Guide to ABAP – Parte 29 – CATCH SYSTEM-EXCEPTIONS

Você provavelmente já apertou F1 em um comando, e viu no final do help uma lista com as “Exceptions” que o sistema pode disparar caso você não utilize o comando corretamente. Aquela é a famosa lista de Runtime Errors(dumps) do comando, com as informações devidas caso você queira prevenir a “Exception” e tratá-la dentro do seu programa (mas nem todas podem ser tratadas!).

Help do comando MOVE. Notem que a descrição mostra a classe de exceção e também o nome dos Runtime Errors (dumps) que você pode tratar (e também os que você não pode tratar).

Nas versões mais novas do AS (Application Server), essa lista vai mostrar as Classes de Exceção por onde você deve capturar o erro, como na figura cima. O Mauro fez um post muito bom explicando como as Classes de Exceção funcionam na Orientação à Objetos, inclusive mostrando um caso de capturar uma exceção do sistema para o comando MOVE.

Mas aqui eu quero mostrar o jeito mais antigo, velho, mais ROOTS e obsoleto de capturar exceções disparadas pelo sistema. Tipo um trabalho histórico, manja? :P

Na figura ali de cima, além de mostrar as Classes de Exceção, o sistema também nos motra o nome do Runtime Error de cada exceção. Vamos forçar um deles:

Se você executar o comando acima, o sistema vai disparar o seguinte Runtime Error:

Tela do DUMP para o comando MOVE, usado de forma errada.

Lembram-se que esse Runtime Error aparecia como “Catchable” no help do comando? Isso indica que podemos tratá-lo utilizando o CATCH-SYSTEM EXCEPTIONS. Veja só:

Ou seja, você vai associar um número para o return code (sy-subrc), exatamente como você já faz quando chama alguma função. Após o Catch, você trata o erro do jeito que achar melhor.

Eu usei o mesmo exemplo do post do Mauro de propósito. A idéia é que você possa comparar as duas formas de capturar a exceção, a antiga e a nova. Mas lembre-se que esta forma apresentada neste post, é obsoleta nas versões mais novas do SAP.

É importante dizer para os mais novos que as exceções existem por um motivo: você usou o comando de uma forma que não deveria ter usado. O correto é você entender o porque isso aconteceu e corrigir o código, e não sair jogando CATCHs para todos os comandos.

Abraços!

Tags: ,


About the Author

é pasteleiro ABAP Sênior, criou o ABAPZombie junto com o Mauro em 2010. Gosta de filosofar sobre fundamentos básicos da programação e assuntos polêmicos. Metal, artes marciais e games indies são legais. Zumbis não.



3 Responses to ABAPZombie Guide to ABAP – Parte 29 – CATCH SYSTEM-EXCEPTIONS

  1. Muito bom Mauricio.

    Eu não conhecia essa forma XD

    Abs,

  2. Ivan says:

    Valeu mesmo!
    Eu estou trabalhando com ABAP a 8 meses (Junior) e tenho aprendido muito com esse site.
    Recentemente eu dei manutenção num código que tinha uma situação muito parecida com essa e eu não sabia muito bem o que significava. Como ficar perguntando tudo para os mais sabidos aqui do trampo é meio chato….sempre venho navegar por esses lados e dessa vez foi bem no alvo!
    Estive pensando em colaborar de alguma maneira…se tiver como…avise.
    Abraços e obrigado.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Back to Top ↑