Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
GDI+ foutafhandeling in System.Drawing is bijgewerkt om te genereren ExternalException in plaats van OutOfMemoryException voor Status.OutOfMemory fouten.
Geïntroduceerde versie
.NET 10
Vorig gedrag
Voorheen, wanneer GDI+ fouten aantrof Status.OutOfMemory (vaak vanwege ongeldige invoer in plaats van werkelijke geheugenproblemen), wierpen OutOfMemoryExceptionSystem.Drawing-API's.
Nieuw gedrag
Vanaf .NET 10, als GDI+ Status.OutOfMemory fouten tegenkomt, werpen de System.Drawing-API's nu ExternalException uit.
Type van brekende verandering
Dit is een gedragsverandering.
Reden voor wijziging
GDI+ is niet bijzonder goed bij het retourneren van fouten wanneer het geen interne objecten kan maken. Er zijn veel gevallen waarin het maken van objecten mislukt vanwege ongeldige invoer en code op een hoger niveau een null krijgt en verandert in Status.OutOfMemory. Dit is vaak een bron van verwarring, omdat de fout vaak niet is gerelateerd aan werkelijke geheugenproblemen.
De wijziging naar ExternalException zorgt voor nauwkeurigere rapportage van fouten, aangezien dit uitzonderingstype al wordt gegenereerd in andere codepaden van System.Drawing voor vergelijkbare GDI+-fouten.
Aanbevolen actie
Als uw code OutOfMemoryException opvangt bij het gebruik van System.Drawing-API's, zorg er dan voor dat u ook ExternalException opvangt om deze GDI+-fouten af te handelen.
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
Betreffende API's
Alle System.Drawing-API's die communiceren met GDI+ en die eerder OutOfMemoryException konden werpen voor Status.OutOfMemory fouten, waaronder maar niet beperkt tot:
- System.Drawing.Bitmap constructors en methoden
- System.Drawing.Graphics Methoden
- System.Drawing.Image Methoden
- System.Drawing.Icon constructors en methoden
- Andere System.Drawing-typen die GDI+ intern gebruiken