Pular para o conteúdo principal
Todos os métodos e Properties de interface do ABBYY FineReader Engine retornam um valor do tipo HRESULT. O HRESULT (de “result handle”) é uma forma de retornar valores de sucesso, aviso e erro. Na prática, os HRESULTs não são handles de nada; são apenas valores de 32 bits com vários campos codificados em seu valor. Um resultado igual a zero indica sucesso, e um resultado diferente de zero indica falha. Se uma chamada de método ou propriedade não for bem-sucedida, esse método ou propriedade retornará um código HRESULT que indica a falha. Além disso, ele fornece uma descrição mais detalhada do erro por meio da interface IErrorInfo.
No Windows: consulte a documentação sobre COM para obter uma descrição detalhada do tratamento de erros.
  • C#. (somente no Windows) Wrappers gerados automaticamente para interfaces COM detectam erros e os convertem em exceções padrão. Envolva uma sequência de métodos do ABBYY FineReader Engine com as instruções:
try
{
    ...
}
catch( Exception e )
{
    ...
}
  • C++ com suporte nativo a COM (Windows). A tecnologia de suporte nativo a COM converte os códigos HRESULT das funções de interface em exceções de um tipo especial (_com_error) e usa automaticamente as informações de IErrorInfo. Assim, uma sequência de métodos do FineReader Engine pode ser delimitada pelas instruções:
try {
    ...
}
catch (_com_error& e) {
    ...
}
Em geral, o tratamento de erros com o suporte nativo a COM pode ser feito da maneira padrão para qualquer código C++ que use funções que possam gerar exceções.
  • C++ puro / C++. Os métodos de interface e as Properties do FineReader Engine não podem gerar exceções, mas retornam HRESULTs. Os principais recursos para tratar esses códigos de retorno são as macros SUCCEEDED e FAILED. Elas testam o valor de HRESULT e, com base nele, determinam qual foi o resultado da operação — sucesso ou falha. Para obter um ponteiro para a interface do objeto IErrorInfo, use as seguintes funções da API:
    • GetErrorInfo para Windows
    • GetFREngineErrorInfo para Linux e macOS:
wchar_t* GetErrorMessage() {
   IErrorInfo* errorInfo;
   if( GetFREngineErrorInfo( 0, &errorInfo ) == S_OK && errorInfo != 0 ) {
      // Obter descrição do erro 
      wchar_t* description;
      errorInfo->GetDescription( &description );
      errorInfo->Release();
      return description;
   } else {
      return L"Unknown error";
   }
}
  • Java (apenas Linux e Windows). Consulte Using ABBYY FineReader Engine in Java para ver orientações sobre o tratamento de erros em Java.
  • Visual Basic (somente Windows). Os usuários do Visual Basic podem acessar o código HRESULT por meio da propriedade Number do objeto Err. Os outros atributos do objeto Err são inicializados com as informações de IErrorInfo. Aqui, o tratamento de erros é feito com o uso da instrução On Error. Se você não usar a instrução On Error Resume Next em nenhum ponto do código, qualquer erro em tempo de execução que ocorrer poderá fazer com que uma mensagem de erro de IErrorInfo seja exibida e a execução do código seja interrompida.

Veja também

Códigos de retorno padrão