Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O tratamento de erros GDI+ em System.Drawing foi atualizado para lançar ExternalException em vez de OutOfMemoryException erros Status.OutOfMemory .
Versão introduzida
.NET 10
Comportamento anterior
Anteriormente, quando o GDI+ encontrava erros Status.OutOfMemory (geralmente devido a entradas inválidas em vez de problemas reais de memória), as APIs System.Drawing lançavam OutOfMemoryException.
Novo comportamento
A partir do .NET 10, quando o Status.OutOfMemory GDI+ encontra erros, as APIs System.Drawing agora lançam ExternalExceptiono .
Tipo de mudança disruptiva
Trata-se de uma mudança de comportamento.
Motivo da mudança
O GDI+ não é particularmente bom em retornar erros quando não consegue criar objetos internos. Há muitos casos em que a criação de objetos falha devido a uma entrada inválida, e o código de nível superior obtém um nulo e o transforma em Status.OutOfMemory. Isso é frequentemente uma fonte de confusão, uma vez que o erro muitas vezes não está relacionado a problemas reais de memória.
A alteração para ExternalException fornece relatórios de erros mais precisos, pois esse tipo de exceção já é lançado em outros caminhos de código System.Drawing para erros GDI+ semelhantes.
Ação recomendada
Se o seu código for capturado OutOfMemoryException ao usar APIs System.Drawing, certifique-se de também capturar ExternalException para lidar com esses erros GDI+.
try
{
// System.Drawing operations
}
catch (ExternalException ex)
{
// Handle GDI+ errors (including former OutOfMemoryException cases)
}
catch (OutOfMemoryException ex)
{
// Handle actual memory issues
}
Try
' System.Drawing operations
Catch ex As ExternalException
' Handle GDI+ errors (including former OutOfMemoryException cases)
Catch ex As OutOfMemoryException
' Handle actual memory issues
End Try
APIs afetadas
Todas as APIs System.Drawing que interagem com GDI+ e anteriormente podem gerar OutOfMemoryExceptionStatus.OutOfMemory erros, incluindo, mas não limitado a:
- System.Drawing.Bitmap Construtores e métodos
- System.Drawing.Graphics Metodologia
- System.Drawing.Image Metodologia
- System.Drawing.Icon Construtores e métodos
- Outros tipos System.Drawing que usam GDI+ internamente