اینجا میتونی برنامه نویسی ویندوز رو به طور کاملا رایگان یاد بگیری
3 سال پیش / خواندن دقیقه

ایجاد Exception سفارشی در سی شارپ

در فصل های قبل با استثناهای درونی در زبان سی شارپ آشنا شدیم. اکنون میخواهیم خود یک استثنای سفارشی را ایجاد کنیم. در این فصل به ایجاد یک استثنای سفارشی خواهیم پرداخت.

Exception سفارشی

در قسمت های قبل کلاس های استثنای داخلی در سی شارپ را مشاهده کردیم. شما می‌توانید با ارث بری از کلاس Exception و یا ApplicationException استثنای سفارشی مورد نظر خود را ایجاد کنید. کلاس ApplicationException از نسخه یک دات نت تاکنون موجود بوده است و از آن به عنوان کلاس پایه برای استثناها استفاده می‌شده است. با این حال مایکروسافت پیشنهاد میکند که از کلاس پایه Exception برای ایجاد استثناهای سفارشی خود استفاده کنید.

در نمونه مثال زیر در برنامه school کلاس استثنای InvalidStudentNameException را ایجاد کرده ایم که اجازه  نمی‌دهد کاراکترهای خاص و اعداد در نام دانش آموزان استفاده شود :

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 استفاده کرد. برای این کار از کلمه کلیدی throw استفاده کنید :

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

خروجی نمونه مثال بالا به شکل زیر است  :

Invalid Student Name: James000


شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع