Rumah > Artikel > pembangunan bahagian belakang > Pengendalian Pengecualian dalam C#
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.
Pengendalian pengecualian boleh dilakukan dengan empat kata kunci di bawah.
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 }
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.
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.
Pengecualian diperoleh daripada Sistem. Kelas pengecualian. Berikut ialah senarai kelas pengecualian biasa C#.
|
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 |
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.
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:
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:
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:
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:
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:
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!