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();
|
|
}
|
|
` |