Image.FromFile 例外処理が誤解を招く可能性がある理由
問題:
試行中より明示的なエラー メッセージを提供するために、によってスローされた OutOfMemoryException をキャッチするコードが作成されました。 Image.FromFile を変更し、カスタム メッセージを含む FormatException として再スローします。ただし、このアプローチの有効性に関して懸念が生じています。
回答:
Image.FromFile によってスローされる OutOfMemoryException は、メモリ割り当ての問題を示すことを目的としたものではありません。むしろ、これは、無効な画像形式を含む幅広いエラーを処理するために GDI ライブラリによって使用されるレガシー エラー コードです。
Image.FromFile の基礎となる GDI ライブラリは、 の出現前に開発されました。 NET とその堅牢な例外処理システム。その結果、GDI は限られたエラー コードのセットに依存して問題を報告します。 OutOfMemory エラー コードは、次のようなさまざまな問題を網羅するものとして機能します。
OutOfMemoryException をオーバーライドすることで、実際のメモリ割り当ての失敗と無効なイメージ ファイルを区別することがさらに困難になります。これは、混乱や誤ったエラー処理につながる可能性があります。
したがって、Image.FromFile の例外処理動作を変更しないことをお勧めします。代わりに、デフォルトのエラー報告メカニズムを利用して、発生した問題の最も正確な説明を提供することをお勧めします。
以上が「Image.FromFile」から「OutOfMemoryException」をキャッチし、「FormatException」として再スローすることが誤解を招くのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。