| 
									
										
										
										
											2018-10-12 16:35:31 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | title: Exceptions | 
					
						
							|  |  |  | localeTitle: استثناءات | 
					
						
							|  |  |  | --- | 
					
						
							|  |  |  | # استثناءات
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | الاستثناء هو خطأ غير متوقع يحدث أثناء تشغيل أحد البرامج ، مثل محاولة الوصول إلى ملف غير موجود. سيوقف البرنامج إذا لم يتم التعامل معه. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## مثال
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | إذا حاولنا قراءة نص ملف غير موجود: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 14:14:23 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | using System.IO; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | string content = File.ReadAllText(@"C:\DoesNotExist.txt"); | 
					
						
							|  |  |  | ```  | 
					
						
							| 
									
										
										
										
											2018-10-12 16:35:31 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | سيتم رفع `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  | 
					
						
							|  |  |  |  }  | 
					
						
							|  |  |  | `  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### التعامل مع استثناءات محتملة مع الشروط
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | بدلا من | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 14:14:23 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | try | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |    conn.Close(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | catch (Exception ex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |    //code for handling exceptions. | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ```  | 
					
						
							| 
									
										
										
										
											2018-10-12 16:35:31 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | جرب هذا | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 14:14:23 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | if (conn.State != ConnectionState.Closed) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     conn.Close(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ``` |