Image.FromFile 因無效圖像格式拋出OutOfMemoryException:解釋
嘗試使用Image.FromFile 載入圖片時,開發人員可能會載入圖片對於具有有效圖像格式的檔案也會遇到OutOfMemoryException。這似乎違反直覺,從而引發了一個問題:為什麼會故意針對無效圖像格式拋出此異常。
答案在於 GDI 函式庫的歷史,而這個函式庫是在 .NET 出現之前開發的。 GDI 的 C 實作依賴錯誤代碼而不是異常來報告問題。為了保持相容性,GDI 的 .NET 包裝器保留了此行為。
由於 C 的限制,可能的錯誤代碼的數量受到限制。因此,GDI 僅定義了 20 個錯誤代碼,不足以涵蓋所有潛在的影像格式問題。此限制導致 OutOfMemory 錯誤代碼過載,以表示真正的記憶體問題和圖像檔案格式的問題。
遇到無效的影像格式時,GDI 無法確定問題是否源自於缺乏可用記憶體或影像檔案中的資料損壞。因此,它將錯誤報告為 OutOfMemory。
為了提供更準確的錯誤處理,您可以將Image.FromFile 呼叫包裝在try-catch 區塊中,並拋出更多上下文特定的異常,例如FormatException ,如提供的程式碼所示:
public static Image OpenImage(string filename) { try { return Image.FromFile(filename); } catch (OutOfMemoryException ex) { throw new FormatException("The file does not have a valid image format.", ex); } }
透過處理OutOfMemoryException並提供更具描述性的異常,您可以改善用戶體驗並使其更容易找出並解決錯誤原因。
以上是為什麼'Image.FromFile”會因無效圖像格式而拋出'OutOfMemoryException”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!