با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبلی نحوه کار کردن با throw برای مدیریت بیشتر خطاها در #C شرح دادیم. در این بخش قصد داریم شما را با خطایابی سفارشی در #C یا Custom Exception در سی شارپ ، نحوه تعریف فیلترهای سفارشی و مدیریت خطاها در سطحی بالاتر آشنا کنیم.
در بسیاری از موارد Exception های که #C در اختیاری ما قرار داده است برای مدیریت خطا ها مناسب بوده و جوابگو هستند ولی در برخی موارد نیاز داریم که مدیریت خطای دقیق تری را روی استثناء ها داشته باشیم ، از این رو از Custom Exception استفاده می کنیم.
چارچوب Net. در ورژن ۱٫۰ شامل کلاس ApplicationException بود که طراحی شده بود که به عنوان یک کلاس پایه برای استثناء های سفارشی استفاده شود. با این حال، مایکروسافت اکنون توصیه می کند از کلاس Exception برای ایجاد استثناء سفارشی اسنفاده شود.
برای مثال، کلاس استثناء InvalidStudentNameException را در یک برنامه مدرسه ایجاد می کنیم، که اجازه نمی دهد در نام دانش آموزان از هیچ کاراکتر خاص یا عددی استفاده شود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Student { public int StudentID { get; set; } public string StudentName { get; set; } } [Serializable] class InvalidStudentNameException : Exception { public InvalidStudentNameException() { } public InvalidStudentNameException(string name) : base(String.Format("Invalid Student Name: {0}", name)) { } } |
حالا، شما می توانید هر زمان که پراپرتی نام ، شامل کاراکترهای خاص یا اعداد خاص بود از استثناء InvalidStudentNameException استفاده کنید مانند زیر :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | class Program { static void Main(string[] args) { Student newStudent = null; try { newStudent = new Student(); newStudent.StudentName = "James007"; ValidateStudent(newStudent); } catch(InvalidStudentNameException ex) { Console.WriteLine(ex.Message ); } Console.ReadKey(); } private static void ValidateStudent(Student std) { Regex regex = new Regex("^[a-zA-Z]+$"); if (!regex.IsMatch(std.StudentName)) throw new InvalidStudentNameException(std.StudentName); } } |
خروجی :
1 | Invalid Student Name: James000 |
بنابراین، شما می توانید استثناء های سفارشی ایجاد کنید که از استثنائات سیستم متمایز هستند.
در این بخش با نحوه ایجاد استثناء های سفارشی در زبان #C آشنا شدید.
در بخش بعدی شما را مفهوم Delegate و کاربرد آن در زبان #C آشنا خواهیم کرد.