65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			65 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();  | ||
|  |  }  | ||
|  | ` |