Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengendalian Pengecualian dalam C#

Pengendalian Pengecualian dalam C#

WBOY
WBOYasal
2024-09-03 15:20:231095semak imbas

Kami tidak boleh mengharapkan pengguna memasukkan butiran yang betul sepanjang masa. Walau bagaimanapun, jika input yang salah atau tidak dijangka tidak dikendalikan dengan betul, keseluruhan kod boleh ranap atau pergi dengan gelung yang tidak berkesudahan. Ini adalah masalah yang bermula semasa melaksanakan program disebabkan oleh keadaan atau input yang tidak dijangka. Sebagai contoh, hasilnya adalah tidak terhingga apabila nombor dibahagi dengan sifar. Pengendalian pengecualian ialah cara untuk memberitahu program untuk beralih ke blok kod seterusnya atau memberikan hasil yang ditentukan dalam situasi tertentu.

Kata kunci Pengendalian Pengecualian dalam C#

Pengendalian pengecualian boleh dilakukan dengan empat kata kunci di bawah.

  1. Cuba: Blok cuba mentakrifkan jenis pengecualian yang akan dikendalikan. Di sinilah pengecualian akan ditangkap. Ia akan sentiasa berpasangan dengan satu blok tangkapan.
  2. Tangkapan: Setelah blok cuba menentukan jenis dan mendapat satu pengecualian semasa pelaksanaan, blok tangkapan akan mengesahkan jenis pengendali pengecualian yang akan digunakan. Blok ini juga akan menentukan di mana pengecualian itu akan dikendalikan. Seperti yang ditunjukkan oleh kata kunci, ia seperti menangkap pengecualian.
  3. Akhir sekali: Blok ini mempunyai beberapa set pernyataan. Tanpa mengira pengecualian yang dilemparkan, pernyataan yang ditakrifkan dalam blok akhir akan sentiasa dilaksanakan.
  4. Balingan: Apabila pengecualian ditangkap, kata kunci lontaran digunakan untuk menunjukkan pengecualian yang ditangkap.

Anda boleh menyimpan perisian atau kod anda daripada banyak kerumitan dengan menentukan pengendali pengecualian. Amalan yang baik untuk menentukan pengendali pengecualian di mana-mana sahaja terdapat kemungkinan pengecualian.

Sintaks:

Apabila pengecualian dinaikkan, kaedah yang diisytiharkan menangkap pengecualian dengan bantuan kata kunci try and catch. Kita perlu meletakkan gabungan ini pada bahagian kod, pengecualian dijangka. Kod ini dipanggil kod dilindungi. Anda juga boleh menentukan lebih daripada satu kata kunci tangkapan untuk kata kunci satu percubaan. Pada penghujung kandungan, bahagian akhir kod akan dilaksanakan dan itu akan dilaksanakan sama ada pengecualian dinaikkan atau tidak.

Kod:

try
{
//Define the statement that could cause an exception.
}
Catch(ExceptionName secondException)
{
//error handling code
}
Finally
{
//define the statement that will be executed
}

Bagaimanakah Pengendalian Pengecualian berfungsi dalam C#?

Terdapat banyak kelas yang dipratentukan untuk mengendalikan pengecualian. Blok cuba meliputi bahagian kod yang mungkin membuang pengecualian dan menangkap mengesahkan perkara yang perlu dilakukan apabila pengecualian ditangkap. Bahagian akhir blok mentakrifkan perkara yang mesti dilakukan sama ada pengecualian dikesan atau tidak dan bahagian lontaran memaparkan mesej jika ditetapkan.

Kelas Pengecualian dalam C#

Terdapat banyak kelas yang tersedia dalam C# di mana pengecualian boleh diwakili. Semua kelas berasal dari kelas utama yang dipanggil System. Pengecualian. Terdapat beberapa kelas yang juga berasal daripada System.ApplicationException dan System.SystemException.

Contoh Kelas Pengecualian dalam C#

Pengecualian diperoleh daripada Sistem. Kelas pengecualian. Berikut ialah senarai kelas pengecualian biasa C#.

                   Exception                    Description
System.DivideByZeroException handles the error when trying to divide a number by zero.
System.NullReferenceException handles the error when referring to an object which does not exist.
System.InvalidCastException handles the error when trying invalid casting.
System.IO.IOException All input-output error is handled.
System.FieldAccessException When trying to access unauthorized class
                   Pengecualian
                   Perihalan
System.DivideByZeroException mengendalikan ralat apabila cuba membahagikan nombor dengan sifar.
System.NullReferenceException mengendalikan ralat apabila merujuk kepada objek yang tidak wujud.
System.InvalidCastException mengendalikan ralat apabila mencuba penghantaran tidak sah.
System.IO.IOException Semua ralat input-output dikendalikan.
System.FieldAccessException Apabila cuba mengakses kelas yang tidak dibenarkan

1. C# try/catch

Exception handling is done by try and catches block in C#. The try block in C# is used to place the code that may throw an exception. The exception is handled by the catch block.

C# example without try/catch

Code:

using System;
public class exceptionhandling
{
public static void Main(string[] args)
{
int a = 10;
int b = 0;
int x = a/b;    //we are trying to divide the number with zero
Console.WriteLine("other part of the code");
}
}

Output:
Pengendalian Pengecualian dalam C#

C# try/catch example

Code

using System;
public class ExExample
{
public static void Main(string[] args)
{
try
{
int a = 10;
int b = 0;
int x = a / b;
}
catch (Exception e) { Console.WriteLine(e); }
Console.WriteLine("Rest of the code");
}
}

Output:
Pengendalian Pengecualian dalam C#

Use of Exception Classes in C# finally

It will show you the message regardless the exception is caught.

Code

using System;
public class Exceptionhandling
{
public static void Main(string[] args)
{
try
{
int x = 5;
int y= 0;
int z = x / y;
}
catch (Exception obj) { Console.WriteLine(obj); }
finally { Console.WriteLine("Time to execute finally block"); }
Console.WriteLine("Other part of the code");
}
}

Output:
Pengendalian Pengecualian dalam C#

1. C# finally example if Exception is not handled

Code

using System;
public class ExceptionHandling
{
public static void Main(string[] args)
{
try
{
int p = 6;
int q = 0;
int r= p/q;
}
catch (NullReferenceException nullObject) { Console.WriteLine(nullObject); }
finally { Console.WriteLine("Exception not handled. Now Finally section will be executed"); }
Console.WriteLine("Other part of the code");
}
}

Output:
Pengendalian Pengecualian dalam C#

2. C# user-defined Exception

The not only system defined, but we can also set our own exception. However, we need to inherit the code in order to get this done.

Code

using System;
public class userdefinedInvalidAge : Exception
{
public userdefinedInvalidAge (String errorMessage)
: base(errorMessage)
{
}
}
public class TestUserDefinedException
{
static void validateAge(int age)
{
if (age < 18)
{
throw new userdefinedInvalidAge("Sorry, Age must be greater than 18");
}
}
public static void Main(string[] args)
{
try
{
validateAge(12);
}
catch (userdefinedInvalidAge e) { Console.WriteLine(e); }
Console.WriteLine("Rest of the code");
}
}

Output:
Pengendalian Pengecualian dalam C#

Conclusion

At any place you think it might generate an error because of anything, exception handler should be used. It is essential that you use a catch statement and start from generic to a specific exception. Your entire software or code is at risk without proper exception handler.

Atas ialah kandungan terperinci Pengendalian 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
Artikel sebelumnya:Rangka Kerja Entiti C#Artikel seterusnya:Rangka Kerja Entiti C#