Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La gestion des erreurs GDI+ dans System.Drawing a été mise à jour pour lever ExternalException au lieu de OutOfMemoryException pour les erreurs Status.OutOfMemory.
Version introduite
.NET 10
Comportement précédent
Précédemment, lorsque GDI+ a rencontré des Status.OutOfMemory erreurs (souvent en raison d’une entrée non valide plutôt que de problèmes de mémoire réels), les API System.Drawing ont levé OutOfMemoryException.
Nouveau comportement
À partir de .NET 10, lorsque GDI+ rencontre des erreurs, les API System.Drawing lèvent maintenant Status.OutOfMemory.
Type de changement cassant
Il s’agit d’un changement comportemental.
Raison de la modification
GDI+ n’est pas particulièrement performant à retourner des erreurs lorsqu’il n’est pas en mesure de créer des objets internes. Il existe de nombreux cas où la création d’objets échoue en raison d’une entrée non valide, et le code de niveau supérieur obtient une valeur Null et le transforme en Status.OutOfMemory. Il s’agit souvent d’une source de confusion, car l’erreur n’est souvent pas liée aux problèmes de mémoire réels.
La modification de ExternalException fournit des rapports d’erreurs plus précis, car ce type d’exception est déjà levé dans d’autres chemins de code System.Drawing pour des erreurs GDI+ similaires.
Action recommandée
Si votre code intercepte OutOfMemoryException lors de l’utilisation des API System.Drawing, veillez à intercepter également ExternalException pour gérer ces erreurs 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
API affectées
Toutes les API de System.Drawing qui interagissaient avec GDI+ et pouvaient auparavant provoquer des erreurs OutOfMemoryException pour Status.OutOfMemory, y compris, mais sans s'y limiter :
- System.Drawing.Bitmap constructeurs et méthodes
- System.Drawing.Graphics méthodes
- System.Drawing.Image méthodes
- System.Drawing.Icon constructeurs et méthodes
- Autres types System.Drawing qui utilisent GDI+ en interne