Rumah >pembangunan bahagian belakang >Tutorial C#.Net >Jenis Pengecualian dalam C#

Jenis Pengecualian dalam C#

PHPz
PHPzasal
2024-09-03 15:20:36928semak imbas

Masalah yang timbul semasa pelaksanaan program adalah pengecualian dan pengecualian ini adalah tindak balas kepada keadaan yang luar biasa semasa menjalankan program seperti pengecualian yang dibangkitkan apabila kita cuba membahagi dengan sifar dan kawalan dipindahkan dari satu bahagian program ke bahagian lain program melalui pengecualian dan pengendalian pengecualian diuruskan dengan empat kata kunci dalam C#, ia cuba, tangkap, akhirnya dan buang blok.

Jenis Pengecualian dalam C# dengan Contoh

Terdapat beberapa jenis pengecualian dalam C#. Mereka ialah:

1. System.OutOfMemoryException

Ralat yang dijana kerana memori percuma yang tidak mencukupi dikendalikan oleh pengecualian ini. Pertimbangkan contoh program di bawah untuk menunjukkan Sistem. OutOfMemoryException.

Contoh:

//a class called check is defined
public class check
{
//main method is called
public static void Main()
{
// a string variable is created and tried to store 2.1 billion characters and this causes an out of memory exception
string val = new string('r', int.MaxValue);
}
}

Output:

Jenis Pengecualian dalam C#

Output:

Dalam program di atas, kelas yang dipanggil semak ditentukan. Kemudian kaedah utama dipanggil. pembolehubah rentetan dicipta dan cuba menyimpan 2.1 bilion aksara, dan ini menyebabkan pengecualian memori.

2. System.NullReferenceException

Ralat yang dijana daripada merujuk objek nol dikendalikan oleh pengecualian ini. Pertimbangkan contoh program di bawah untuk menunjukkan Sistem. NullReferenceException

Contoh:

using System;
//a class called check is defined
class check
{
//main method is called
static void Main()
{
//a string variable is defined, and it is referencing to null
string value = null;
//the length of the value referencing to null is checked if it is equal to zero causing an exception
if (value.Length == 0)
{
Console.WriteLine(value);
}
}
}

Output:

Jenis Pengecualian dalam C#

Dalam program di atas, kelas yang dipanggil semak ditentukan. Kemudian kaedah utama dipanggil. Kemudian pembolehubah rentetan ditakrifkan, dan ia merujuk kepada null. Kemudian panjang nilai yang merujuk kepada null disemak jika ia sama dengan sifar menyebabkan pengecualian.

3. System.InvalidCastException

Ralat yang dijana semasa penuangan taip dikendalikan oleh pengecualian ini. Pertimbangkan contoh program di bawah untuk menunjukkan Sistem. InvalidCastException.

Contoh:

using System.IO;
using System.Text;
//a class called check is defined
class check
{
//main method is called
static void Main()
{
// an instance of the string builder class is created which is then assigned to a new object through implicit casting and then casting is tried explicitly to convert the instance of stringbuilder class to streamreader class
StringBuilder ref1 = new StringBuilder();
object ref2 = ref1;
StreamReader ref3 = (StreamReader)ref2;
}
}

Output:

Jenis Pengecualian dalam C#

Dalam program di atas, kelas yang dipanggil semak ditentukan. Kemudian kaedah utama dipanggil. Kemudian contoh kelas pembina rentetan dibuat yang kemudiannya diperuntukkan kepada objek baharu melalui pemutus tersirat dan kemudian pemutus dicuba secara eksplisit untuk menukar contoh kelas pembina rentetan kepada kelas pembaca strim yang menyebabkan pengecualian.

4. System.ArrayTypeMismatchException

Ralat yang dijana apabila terdapat ketidakpadanan jenis dengan jenis tatasusunan dikendalikan oleh pengecualian ini. Pertimbangkan contoh program di bawah untuk menunjukkan Sistem. ArrayTypeMismatchException.

Contoh:

//a class called check is defined
class check
{
//main method is called
static void Main()
{
// a string is defined and assigned the values which is then assigned to object class array and then an integer is tried to put in the same array which causes an exception
string[] arr1 = { "Welcome", "to", "CSharp" };
object[] arr2 = arr1;
arr2[0] = 8;
}
}

Output:

Jenis Pengecualian dalam C#

Dalam program di atas, kelas yang dipanggil semak ditentukan. Kemudian kaedah utama ditakrifkan. Kemudian rentetan ditakrifkan dan diberikan nilai yang kemudiannya diberikan kepada tatasusunan kelas objek dan kemudian integer cuba dimasukkan ke dalam tatasusunan yang sama yang menyebabkan pengecualian.

5. System.IndexOutOfRangeException

Ralat yang dijana apabila kaedah merujuk kepada tatasusunan yang berada di luar julat dikendalikan oleh pengecualian ini. Pertimbangkan contoh program di bawah untuk menunjukkan Sistem. IndexOutOfRangeException.

Contoh:

//a class called check is defined
class check
{
//main method is called
static void Main()
{
// an array is defined to store 100 integers but then an integer is tried to be stores at a position outside of the size of the array which causes an exception
int[] arr = new int[10];
arr[0] = 10;
arr[10] = 20;
arr[20] = 30;
}
}

Output:

Jenis Pengecualian dalam C#

Dalam program di atas, kelas yang dipanggil semak ditentukan. Kemudian kaedah utama dipanggil. Kemudian tatasusunan ditakrifkan untuk menyimpan 100 integer tetapi kemudian integer cuba disimpan pada kedudukan di luar saiz tatasusunan yang menyebabkan pengecualian.

6. System.DivideByZeroException

Ralat yang dijana apabila dividen dibahagikan dengan sifar dikendalikan oleh pengecualian ini. Pertimbangkan contoh program di bawah untuk menunjukkan Sistem. DivideByZeroException.

Contoh:

using System;
//a class called check is defined
class check
{
//main method is called
static void Main()
{
//an integer variable res is defined which is tried to divide by zero which causes an exception
int res = 10 / int.Parse("0");
Console.WriteLine(res);
}
}

Output:

Jenis Pengecualian dalam C#

Dalam program di atas, kelas yang dipanggil semak ditentukan. Kemudian kaedah utama dipanggil. Kemudian pembolehubah integer ditakrifkan yang cuba dibahagi dengan sifar yang menyebabkan pengecualian.

7. System.StackOverflowException

Ralat yang dijana daripada limpahan tindanan dikendalikan oleh pengecualian ini. Pertimbangkan contoh program di bawah untuk menunjukkan Sistem. StackOverflowException.

Contoh:

using System;
//a class called check is defined
public class check
{
// a method called recurse is defined which takes a value as parameter and increases its value by one
static void Recurse(int val)
{
// since we have written a recursive loop and 0 is passed as a parameter, it ends in an infinite loop causing exception
Console.WriteLine(val);
Recurse(++val);
}
//main method is called
public static void Main()
{
//The recurse method is called to start the infinite recursion
Recurse(0);
}
} <strong>Output:</strong>

Jenis Pengecualian dalam C#

In the above program, a class called check is defined. Then a method called recurse is defined which takes a value as a parameter and increases its value by one. Then the main method is called in which the infinite loop for recursion begins by passing zero as a parameter. Then since we have written a recursive loop and 0 is passed as a parameter, it ends in an infinite loop causing an exception.

8. System.IO.IOException

The errors that are generated by input, the output is handled by this exception. Consider the below example program to demonstrate System. IO. IOException.

Example:

using System;
using System.IO;
//a class called check is defined
class check
{
//main methos is called
static void Main()
{
try
{
//a file is tried to open which do not exist and causes an exception
File.Open("D:\\ex.txt", FileMode.Open);
}
catch (IOException)
{
Console.WriteLine("Inputoutput Exception is handled");
}
}
}

Output:

Jenis Pengecualian dalam C#

In the above program, a class called check is defined. Then the main method is called. Then a file is tried to open which does not exist and causes an exception.

Atas ialah kandungan terperinci Jenis Pengecualian dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn