Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GDI+-Fehlerbehandlung in System.Drawing wurde aktualisiert, um bei Fehlern ExternalException statt OutOfMemoryException auszuwerfen Status.OutOfMemory.
Eingeführt in Version
.NET 10
Vorheriges Verhalten
Zuvor, wenn GDI+ auf Status.OutOfMemory Fehler stieß (häufig aufgrund ungültiger Eingaben und nicht aufgrund tatsächlicher Speicherprobleme), lösten die System.Drawing-APIs OutOfMemoryException aus.
Neues Verhalten
Ab .NET 10 lösen System.Drawing-APIs jetzt Status.OutOfMemoryaus, wenn GDI+ Fehler auftrittExternalException.
Art der einschneidenden Änderung
Dies ist eine Verhaltensänderung.
Grund für Änderung
GDI+ ist nicht besonders gut beim Zurückgeben von Fehlern, wenn interne Objekte nicht erstellt werden können. Es gibt viele Fälle, in denen die Objekterstellung aufgrund einer ungültigen Eingabe fehlschlägt, und Code auf höherer Ebene erhält einen Nullwert und wandelt es in Status.OutOfMemory. Dies ist häufig eine Ursache für Verwirrung, da der Fehler häufig nicht mit tatsächlichen Speicherproblemen zusammenhängt.
Die Änderung zu ExternalException bietet eine genauere Fehlerberichterstattung, da dieser Ausnahmetyp bereits in anderen System.Drawing-Codepfaden für ähnliche GDI+-Fehler ausgelöst wird.
Empfohlene Aktion
Wenn Ihr Code OutOfMemoryException abfängt, wenn Sie System.Drawing-APIs verwenden, stellen Sie sicher, dass Sie auch ExternalException behandeln, um diese GDI+-Fehler zu verwalten.
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
Betroffene APIs
Alle System.Drawing-APIs, die mit GDI+ arbeiten und zuvor zu OutOfMemoryException für Status.OutOfMemory Fehler führen konnten, einschließlich, aber nicht beschränkt auf:
- System.Drawing.Bitmap Konstruktoren und Methoden
- System.Drawing.Graphics Methodik
- System.Drawing.Image Methodik
- System.Drawing.Icon Konstruktoren und Methoden
- Andere Typen von System.Drawing, die intern GDI+ nutzen