OutOfMemoryException en C# est une exception levée par le moteur d'exécution du framework .NET lorsque le programme ne dispose pas de suffisamment de mémoire pour continuer son exécution. Comme son nom l'indique, cette exception se produira dans notre programme lorsque le CLR, c'est-à-dire le Common Language Runtime, ne sera pas en mesure d'allouer suffisamment de mémoire qui sera nécessaire pour effectuer certaines opérations de notre programme.
Cette exception ne signifie pas toujours que nous n'avons pas suffisamment d'espace disponible en mémoire mais parfois cela signifie que nous n'avons pas suffisamment de mémoire contiguë requise par notre programme pour l'allocation.
Syntaxe
La syntaxe pour intercepter une OutOfMemoryException en C# est la suivante :
try { //user code which can throw OutOfMemoryException } catch(OutOfMemoryException <em>exception</em>) { //statements to handle the exception }
La syntaxe pour lancer une OutOfMemoryException en C# est la suivante :
throw new OutOfMemoryException();
Dans l'instruction ci-dessus, « throw » est le mot-clé utilisé pour lancer des exceptions en C#.
En C#, nous obtenons OutOfMemoryException lorsque notre programme n'a pas assez d'espace pour continuer son exécution. Il peut y avoir de nombreuses raisons pour lesquelles cette exception est accordée. Nous rencontrons également cette exception lorsqu'au total nous disposons de suffisamment d'espace pour que notre programme s'exécute mais que cet espace n'est pas contigu pour les allocations requises par notre programme. Les deux raisons majeures de cette exception sont les suivantes :
Essayer d'augmenter la longueur d'un objet StringBuilder au-delà de la longueur spécifiée par la propriété MaxCapacity de StringBuilder.
Nous obtiendrons l'exception disant "Mémoire insuffisante pour continuer l'exécution du programme."
Les autres raisons qui peuvent devenir la cause de cette exception comprennent :
Voici les exemples suivants mentionnés ci-dessous
Exemple montrant l'exception OutOfMemoryException levée par le programme lorsque nous essayons d'étendre l'objet StringBuilder au-delà de sa capacité maximale.
Code :
using System; using System.Text; public class Program { public static void Main() { StringBuilder stringBuilder = new StringBuilder(17, 17); stringBuilder.Append("Welcome to the "); try { stringBuilder.Insert(0, "world of C# programming", 1); Console.WriteLine(stringBuilder.ToString()); Console.ReadLine(); } catch (OutOfMemoryException exception) { Console.WriteLine(exception.Message); Console.ReadLine(); } } }
Sortie :
Exemple montrant un programme qui rencontre OutOfMemoryException en essayant d'ajouter l'élément dans la liste où le nombre d'éléments à ajouter est supérieur à la capacité de la liste.
Code :
using System; using System.Text; using System.Collections.Generic; namespace ConsoleApp4 { public class Program { public static void Main() { try { string[] strArray = GetArray(); Console.WriteLine(strArray); Console.ReadLine(); } catch (OutOfMemoryException exception) { Console.WriteLine(exception); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); } } public static string[] GetArray() { List<string> strList = new List<string>(); for (int i = 0; i <= int.MaxValue; i++) { strList.Add("Hello"); } return strList.ToArray(); } } }
Sortie :
Nous pouvons éviter OutOfMemoryException en C# en gardant à l'esprit les points suivants :
Si la plateforme 64 bits n'est pas disponible dans la liste alors :
L'OutOfMemoryException est une exception d'exécution qui indique au programmeur qu'il n'y a pas assez de mémoire ou qu'il y a un manque de mémoire contiguë pour les allocations requises par le programme C#.
Pour éviter cette exception, l'utilisateur doit toujours prendre les précautions nécessaires et doit gérer cette exception.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!