Direct2D políticas de tratamento de erros
Este tópico descreve as políticas de tratamento de erros Direct2D. Ele contém as seguintes seções:
- Uso de HRESULT
- Valor retornado de funções em lote
- Entrada inválida
- NAN e RECTs de entrada mal ordenados
Uso de HRESULT
Se uma função não estiver em lote e puder ter uma falha em tempo de execução, ela deverá retornar HRESULT para indicar uma falha. Uma falha em tempo de execução é qualquer falha que não pode ser evitada em tempo de design, como falta de memória.
Valor retornado de funções em lote
As funções em lote em Direct2D são as funções processadas como uma única unidade quando EndDraw ou Close são chamados. Eles são os comandos de desenho entre BeginDraw e EndDraw ou comandos em GeometrySink. Para essas funções, os erros são relatados no momento em que o lote é concluído. O erro é retornado após EndDraw para comandos de desenho e após Fechar para GeometrySink.
RenderTargets param de desenhar se um estado de erro estiver definido, mas um aplicativo pode chamar Flush para redefinir o estado de erro e retomar o desenho.
As funções Get e Set não têm nenhum valor retornado. No entanto, se uma função Set tiver uma entrada inválida, a camada de depuração gerará uma mensagem. Nesse caso, nenhum estado de erro é definido e a função Set não faz nada.
Entrada inválida
Direct2D desreferencia ponteiros de saída e parâmetros necessários que resultam em violações de acesso quando os ponteiros são inválidos ou NULL.
Ponteiro de Saída
Direct2D desreferencia um ponteiro de saída e o atribui a NULL imediatamente ao entrar na função. Isso causará uma violação de acesso se um chamador passar NULL como o ponteiro para o valor retornado. Essa política também se aplica a matrizes de ponteiros. Para outros parâmetros de saída, como um struct, a desreferência ocorre mais tarde e também resulta em uma violação de acesso. No entanto, há alguns métodos que têm ponteiros de saída opcionais (ou seja, EndDraw, Flush) que não causarão uma violação de acesso.
Parâmetro obrigatório
Se NULL for passado para qualquer função que exija um valor válido, a função desreferencia o ponteiro inválido antecipadamente, resultando em uma violação de acesso. Para parâmetros de entrada opcionais, NULL é um valor válido que resulta em algum padrão razoável.
NAN e RECTs de entrada mal ordenados
Em Direct2D, o NaN é considerado uma entrada válida e RECTs de entrada mal ordenados são classificados.
NaN como Entrada
O NaN é considerado uma entrada válida, embora normalmente resulte no primitivo que contém o naN não desenhado. A API Direct2D não fornece filtragem explícita de NaN para validar a entrada.
RECTs de entrada mal ordenados
RECTs de entrada mal ordenados são classificados para que os cantos superior, esquerdo e inferior direito sejam especificados corretamente. Para saída, retângulos vazios são semelhantes a este: {Infinity, Infinity, FloatMax, FloatMax}.