Nous avons tous d'écrire des applications différentes. Dans un WinForms ou ASP.Net app je serais probablement juste de journal de l'exception, de notifier à l'utilisateur, essayez d'enregistrer l'état, et de l'arrêt/redémarrage. Mais comme Igor mentionné dans les commentaires cela pourrait très bien être de construire une certaine forme d'application d'édition d'image et le processus de chargement de la 100e 20 MO d'image RAW pourrait pousser l'application sur le bord. Voulez-vous vraiment l'utilisation de perdre la totalité de leur travail à partir de quelque chose d'aussi simple que de dire. "Désolé, impossible de charger des images de plus en ce moment".
Un autre exemple qu'il pourrait être utile pour attraper hors de la mémoire exceptions est en fin de traitement par lots. Vous pourriez avoir un modèle standard de chargement multi-mega-octets de fichiers en mémoire pour le traitement, mais un jour, à l'improviste un multi-giga-octets de fichiers est chargé. Lorsque la capacité de mémoire se produit, vous pourriez journal le message à un utilisateur de notification de la file d'attente, puis passer au fichier suivant.
Oui, il est possible que quelque chose d'autre pourrait faire sauter en même temps, mais ceux qui sont trop serait connecté et informé si possible. Si, enfin, la GC est pas en mesure de traiter plus de mémoire que l'application va aller vers le bas dur de toute façon. (Le GC s'exécute dans un fil non protégés.)
Ne pas oublier que nous développons tous types de demandes. Et si vous êtes sur de l'ancien, sous la contrainte des machines, vous n'aurez probablement jamais obtenir une OutOfMemoryException pour les applications d'entreprise... mais encore une fois nous ne sommes pas tous outil de business développeurs.
Pour modifier votre...
De mémoire peut être causée par une mémoire non managée la fragmentation et l'épinglage. Il peut également être provoquée par l'afflux de demandes d'allocation. Si nous devions mettre en place un drapeau blanc et de tracer une ligne dans le sable sur ces questions simples, rien n'aurait pu se faire dans les grandes données de projets de transformation. Maintenant, comparons un fatal exception de Moteur, il n'y a rien que vous pouvez faire à la point de l'exécution des chutes de mort en vertu de votre code. J'espère que vous êtes en mesure de se connecter (mais probablement pas) pourquoi votre code est tombé sur son visage de sorte que vous pouvez les éviter dans le futur. Mais, plus important encore, nous espérons que votre code est écrit dans une manière qui pourrait permettre de sécuriser la récupération de données autant que vous le pouvez. Peut-être même récupérer le dernier bon de le préciser dans votre demande et, éventuellement, sautez la délinquance des données corrompues et lui permettre d'être traitées manuellement et récupéré.
Pourtant, dans le même temps, il est tout aussi possible de disposer de données de la corruption causée par l'injection SQL, out-of-sync versions de logiciel, de manipulation du pointeur, tampon, des dépassements, et de nombreux autres problèmes. Éviter une question juste parce que vous pensez que vous ne pouvez pas récupérer à partir, il est un excellent moyen de donner aux utilisateurs les messages d'erreur comme constructive , Veuillez contacter votre administrateur système.