Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zpracování chyb GDI+ v nástroji System.Drawing bylo aktualizováno tak, aby se místo chyb ExternalException zobrazovalo.OutOfMemoryExceptionStatus.OutOfMemory
Verze byla představena
.NET 10
Předchozí chování
Dříve, když rozhraní GDI+ narazilo Status.OutOfMemory na chyby (často kvůli neplatnému vstupu místo skutečných problémů s pamětí), API System.Drawing vyvolalo OutOfMemoryException.
Nové chování
Počínaje rozhraním .NET 10, když rozhraní GDI+ narazí Status.OutOfMemory na chyby, nyní vyvolá ExternalExceptionrozhraní System.Drawing API .
Typ zásadní změny
Jedná se o změnu chování.
Důvod změny
GDI+ není při vracení chyb obzvlášť dobrý, když není možné vytvářet interní objekty. Existuje mnoho případů, kdy vytvoření objektu selže kvůli neplatnému vstupu, a kód vyšší úrovně získá hodnotu null a převede ho na Status.OutOfMemory. To je často zdroj nejasnosti, protože chyba často nesouvisí se skutečnými problémy s pamětí.
Tato změna ExternalException poskytuje přesnější hlášení chyb, protože tento typ výjimky je již vyvolán v jiných cestách kódu System.Drawing pro podobné chyby GDI+ .
Doporučená akce
Pokud váš kód zachytí OutOfMemoryException při použití rozhraní System.Drawing API, nezapomeňte také zachytit ExternalException tyto chyby 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
Ovlivněná rozhraní API
Všechna rozhraní API System.Drawing, která komunikují s rozhraními GDI+ a dříve můžou vyvolat OutOfMemoryExceptionStatus.OutOfMemory chyby, včetně mimo jiné:
- System.Drawing.Bitmap konstruktory a metody
- System.Drawing.Graphics metody
- System.Drawing.Image metody
- System.Drawing.Icon konstruktory a metody
- Jiné typy System.Drawing, které používají GDI+ interně