OutOfMemoryException dalam C# ialah pengecualian yang dilemparkan oleh enjin pelaksanaan rangka kerja .NET apabila atur cara tidak mempunyai memori yang mencukupi untuk meneruskan pelaksanaannya. Seperti namanya, pengecualian ini akan berlaku dalam program kami apabila CLR iaitu Common Language Runtime tidak akan dapat memperuntukkan memori yang mencukupi yang diperlukan untuk melaksanakan operasi tertentu program kami.
Pengecualian ini tidak selalu bermakna bahawa kita tidak mempunyai ruang yang mencukupi dalam ingatan tetapi kadangkala ia bermakna kita tidak mempunyai ingatan bersebelahan yang mencukupi yang diperlukan oleh program kita untuk peruntukan.
Sintaks
Sintaks untuk menangkap OutOfMemoryException dalam C# adalah seperti berikut:
try { //user code which can throw OutOfMemoryException } catch(OutOfMemoryException <em>exception</em>) { //statements to handle the exception }
Sintaks untuk membuang OutOfMemoryException dalam C# adalah seperti berikut:
throw new OutOfMemoryException();
Dalam pernyataan di atas 'buang' ialah kata kunci yang digunakan untuk membuang pengecualian dalam C#.
Dalam C#, kami mendapat OutOfMemoryException apabila program kami tidak mempunyai ruang yang mencukupi untuk meneruskan pelaksanaannya. Mungkin terdapat banyak sebab untuk mendapatkan pengecualian ini. Kami juga menghadapi pengecualian ini apabila secara keseluruhan kami mempunyai ruang yang cukup untuk program kami untuk dilaksanakan tetapi ruang ini tidak bersebelahan untuk peruntukan yang diperlukan untuk dilakukan oleh program kami. Dua sebab utama pengecualian ini adalah seperti berikut:
Cuba untuk menambah panjang objek StringBuilder melebihi panjang yang ditentukan oleh sifat MaxCapacity StringBuilder.
Kami akan mendapat pengecualian yang mengatakan "Memori tidak mencukupi untuk meneruskan pelaksanaan program."
Sebab lain yang boleh menjadi punca pengecualian ini termasuk:
Berikut ialah contoh berikut yang disebut di bawah
Contoh yang menunjukkan OutOfMemoryException yang dilemparkan oleh program apabila kami cuba mengembangkan objek StringBuilder melebihi kapasiti maksimumnya.
Kod:
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(); } } }
Output:
Contoh menunjukkan atur cara yang menemui OutOfMemoryException semasa cuba menambah elemen dalam senarai dengan bilangan elemen yang akan ditambah adalah lebih daripada kapasiti senarai.
Kod:
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(); } } }
Output:
Kita boleh mengelakkan OutOfMemoryException dalam C# dengan mengingati perkara berikut:
Jika platform 64-bit tidak tersedia dalam senarai maka:
OutOfMemoryException ialah pengecualian masa jalan yang memberitahu pengaturcara bahawa tidak ada memori yang mencukupi atau kekurangan memori bersebelahan untuk peruntukan yang diperlukan oleh program C#.
Untuk mengelakkan pengecualian ini, pengguna harus sentiasa mengambil langkah berjaga-jaga yang diperlukan dan harus mengendalikan pengecualian ini.
Atas ialah kandungan terperinci C# OutOfMemoryException. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!