كتل Catch المتعددة
جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 25 من 66.
تسمح كتل catch المتعددة لك بالتعامل مع أنواع مختلفة من الاستثناءات عبر كود مخصص لكل نوع استثناء.
ابدأ بكتلة try أساسية:
try
{
int number = int.Parse("abc");
}
أضف كتلة catch لاستثناء معين:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
يمكنك إضافة كتل catch متعددة لمعالجة استثناءات مختلفة:
try
{
int number = int.Parse("abc");
int result = a10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
ستنفذ أول كتلة catch مطابقة. رتب كتل catch الخاصة بك من أنواع الاستثناءات الأكثر تحديداً إلى الأكثر عمومية.
التحدي
سهلأنشئ دالة باسم DivideNumbers تأخذ معاملين من نوع string:
numeratorStr: سلسلة نصية تمثل البسطdenominatorStr: سلسلة نصية تمثل المقام
يجب أن تقوم الدالة بما يلي:
- محاولة تحويل كلتا السلسلتين إلى أعداد صحيحة
- محاولة قسمة البسط على المقام
- إرجاع النتيجة كعدد صحيح
- معالجة
FormatExceptionعن طريق طباعة "Invalid format" وإرجاع 0 - معالجة
DivideByZeroExceptionعن طريق طباعة "Cannot divide by zero" وإرجاع 0 - معالجة أي استثناءات أخرى باستخدام كتلة catch عامة تطبع "An error occurred" وإرجاع 0
ورقة مرجعية
تسمح لك كتل catch المتعددة بمعالجة أنواع مختلفة من الاستثناءات (exceptions) باستخدام كود محدد لكل نوع استثناء.
جملة try-catch أساسية مع استثناء محدد:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
كتل catch متعددة لاستثناءات مختلفة:
try
{
int number = int.Parse("abc");
int result = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
سيتم تنفيذ أول كتلة catch متطابقة. قم بترتيب كتل catch من أنواع الاستثناءات الأكثر تحديداً إلى الأكثر عمومية.
جرّب بنفسك
using System;
public class Program
{
public static int DivideNumbers(string numeratorStr, string denominatorStr)
{
// اكتب كودك هنا
}
public static void Main(string[] args)
{
string numeratorStr = Console.ReadLine();
string denominatorStr = Console.ReadLine();
int result = DivideNumbers(numeratorStr, denominatorStr);
Console.WriteLine("Result: " + result);
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادتعريف وتهيئة المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادالمصفوفات المتعرجة (Jagged Arrays)عمليات المصفوفات الشائعةمراجعة - المصفوفات متعددة الأبعاد4تقنيات التحكم في التدفق
الإرجاع المبكرشروط الحمايةجمل القفز (goto)Break و Continueتسطيح الشروط المتداخلة7المعاملات المنطقية المتقدمة
التقييم المختصرالمعاملات المنطقية الشرطيةأولوية المعاملاتمراجعة - المعاملات المتقدمة2اتخاذ القرارات المتقدم
الشروط المتعددةالمنطق البولياني المعقدمقارنة بين If و Switchجمل Switch المتداخلةمراجعة - القرارات المتقدمة5معالجة الاستثناءات
أساسيات Try-Catchأنواع الاستثناءاتكتل Catch المتعددةالتعامل مع الملفاتكتلة FinallyUsing مقابل Try-Finallyاستثناءات مخصصةمراجعة - معالجة الأخطاء8نظام تحليل البيانات
إعداد جمع البياناتمنطق إدخال البيانات11HashSet الجزء الأول
ما هو الـ HashSet؟إضافة عنصرحذف عنصرالتحقق من وجود عنصرالفراغ والحجمملخص - HashSet3تحسينات الحلقات التكرارية
أداء الحلقات التكراريةالتكرار عبر البيانات المعقدةأنواع الحلقات التكراريةإعادة هيكلة الحلقات التكراريةملخص - الحلقات المحسنة6التعامل مع الـ Null
أساسيات الـ Null Referenceأنواع القيم القابلة للـ Nullأنماط التحقق من الـ Nullالبرمجة الدفاعيةملخص - أمان الـ Null