English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exceção personalizada C#

O C# inclui tipos de exceções integradas, como NullReferenceException, MemoryOverflowException e outros. No entanto, quando as regras de negócio do seu aplicativo são violadas, você geralmente deseja lançar uma exceção. Portanto, é possível criar classes de exceções personalizadas derivando da classe ApplicationException.

a partir do .Net v1.0, o .Net Framework introduziu a classe ApplicationException. Ela visa ser usada como a classe base para classes de exceção personalizadas. No entanto, a Microsoft agora recomenda usar a classe Exception para criar classes de exceção personalizadas.

Por exemplo, crie a classe InvalidStudentNameException no aplicativo de escola, que não permite que o nome de qualquer estudante contenha caracteres especiais ou valores numéricos.

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("Nome de Estudante Inválido: {0}", name))
    {}}
    }
  
}

Agora, desde que o nome do programa contenha caracteres especiais ou números, é possível causar InvalidStudentNameException no programa. Use a palavra-chave throw para lançar a exceção.

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--Z]+$
        if (!regex.IsMatch(std.StudentName)) throw new InvalidStudentNameException(std.StudentName);
            
    }
}
Saída:
Nome de Estudante Inválido: James000

Portanto, você pode criar classes de exceção personalizadas para distinguir exceções do sistema.