Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Capturando abandonos com TRAP

From Wiki
Jump to: navigation, search
Article Metadata

Testado com
Aparelho(s): Emulador

Compatibilidade
Plataforma(s): S60

Artigo
Palavras-chave: trap, abandono, exceção, try/catch
Criado por cabezonxdg em 01 de setembro, 2009
Última alteração feita por hamishwillee em 29 Jun 2012


Introdução

TRAP é o mecanismo implementado pelo Symbian para capturar abandonos em aplicações c++. Seriam análogos ao try/catch de c++ padrão uma vez que permite ao programador detectar erros em tempo de execução e tratá-los da maneira devida.

Quando um código abandona é gerado um código de erro e o fluxo de execução da aplicação é desviado para a TRAP mais próxima que irá receber o código de erro gerado. Duas macros são utilizadas para capturar abandonos: TRAP e TRAPD. Ambas funcionam de forma semelhante, a única diferença está na forma como a variável que recebe o código do erro do abandono é declarada. Ao usar TRAP a variável deve ser declarada previamente enquanto que na TRAPD ela é declarada durante a execução da TRAPD.

Nota: O escopo da variável declarada pela TRAPD somente é válido no mesmo escopo da TRAPD.

Definição de TRAP e TRAPD

TRAP(_r, _s)
TRAPD(_r, _s)

Onde:

_r = é um inteiro que irá receber o código do abandono ou KErrNone caso a execução da função seja feita com sucesso.
_s = Conjunto de instruções c++ que possam gerar um abandono. É possível especificar mais de uma separando-as por vírgula mas não é aconselhável para manter a legibilidade do código.

Exemplos de como utilizar TRAP e TRAPD

Exemplo com TRAP:

TInt err;
TRAP(err, FuncaoQuePodeAbandonarL());
if( err == KErrNone ) // não ocorreu abandono
{
// implementação
}
else // Ocorreu abandono
{
// implementação
}


Exemplo com TRAPD:

TRAPD(err, FuncaoQuePodeAbandonarL());
if( err == KErrNone ) // não ocorreu abandono
{
// implementação
}
else // Ocorreu abandono
{
// implementação
}

OBS: A utilização de TRAPs deve ser feita de maneira cautelosa pois introduzem certo overhead e aumento do binário da aplicação.

This page was last modified on 29 June 2012, at 01:19.
273 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×