Kiedy można złapać OutOfMemoryException i jak sobie z tym poradzić?

Wczoraj wziąłem udział w dyskusji na temat SO poświęconej OutOfMemoryException oraz zaletom i wadom jej obsługi (C # spróbuj {} catch {}).

Moje plusy za obsługę to:

Fakt, że wyjątek OutOfMemoryException został zgłoszony, nie oznacza, że ​​stan programu został uszkodzony;Zgodnie z dokumentacją „następujące instrukcje pośrednie Microsoft (MSIL) rzutują OutOfMemoryException: box, newarr, newobj”, które po prostu (zwykle) oznaczają, że CLR próbował znaleźć blok pamięci o danym rozmiarze i nie był w stanie tego zrobić; to robinie oznacza, że ​​żaden pojedynczy bajt nie pozostał w naszej dyspozycji;

Ale nie wszyscy ludzie zgodzili się z tym i spekulowali o nieznanym stanie programu po tym wyjątku i niezdolności do zrobienia czegoś użytecznego, ponieważ wymagać to będzie jeszcze więcej pamięci.

Dlatego moje pytanie brzmi: jakie są poważne powody, aby nie obsługiwać OutOfMemoryException i natychmiast zrezygnować, gdy to nastąpi?

Edytowane: Czy uważasz, że OOME jest tak fatalny jak ExecutionEngineException?

questionAnswers(10)

yourAnswerToTheQuestion