68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Exceptions
 | |
| localeTitle: استثناءات
 | |
| ---
 | |
| # استثناءات
 | |
| 
 | |
| الاستثناء هو خطأ غير متوقع يحدث أثناء تشغيل أحد البرامج ، مثل محاولة الوصول إلى ملف غير موجود. سيوقف البرنامج إذا لم يتم التعامل معه.
 | |
| 
 | |
| ## مثال
 | |
| 
 | |
| إذا حاولنا قراءة نص ملف غير موجود:
 | |
| 
 | |
| ```
 | |
| using System.IO;
 | |
| 
 | |
| string content = File.ReadAllText(@"C:\DoesNotExist.txt");
 | |
| ``` 
 | |
| 
 | |
| سيتم رفع `FileNotFoundException` .
 | |
| 
 | |
| بعض الاستثناءات الشائعة الأخرى:
 | |
| 
 | |
| *   `IndexOutofRangeException` : محاولة الوصول إلى صفيف مع فهرس غير صالح.
 | |
| *   `NullReferenceException` : جرت محاولة استخدام متغير مرجع غير مخصص.
 | |
| *   `DivideByZeroException` : `DivideByZeroException` محاولة القسمة على 0.
 | |
| 
 | |
| ## أفضل الممارسات
 | |
| 
 | |
| ### استخدم المحاولة / catch / النهاية
 | |
| 
 | |
|  `try 
 | |
|  { 
 | |
|    var client = new WebClient(); 
 | |
|    var resultData = client.DownloadString("http://github.com"); 
 | |
|  } 
 | |
|  catch (Exception ex) 
 | |
|  { 
 | |
|    //code for handling exceptions 
 | |
|  } 
 | |
|  finally 
 | |
|  { 
 | |
|    //this code is always executed, does not matter if an exception is thrown or not 
 | |
|  } 
 | |
| ` 
 | |
| 
 | |
| ### التعامل مع استثناءات محتملة مع الشروط
 | |
| 
 | |
| بدلا من
 | |
| 
 | |
| ```
 | |
| try
 | |
| {
 | |
|    conn.Close();
 | |
| }
 | |
| catch (Exception ex)
 | |
| {
 | |
|    //code for handling exceptions.
 | |
| }
 | |
| ``` 
 | |
| 
 | |
| جرب هذا
 | |
| 
 | |
| ```
 | |
| if (conn.State != ConnectionState.Closed)
 | |
| {
 | |
|     conn.Close();
 | |
| }
 | |
| ``` |