Eventos
17 de mar., 23 - 21 de mar., 23
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Neste artigo, você aprende a criar exceções definidas pelo usuário que são herdadas da classe base Exception com mensagens de exceção localizadas usando assemblies satélites.
O .NET contém muitas exceções diferentes que você pode usar. No entanto, em alguns casos, quando nenhuma delas atender às suas necessidades, você poderá criar suas exceções personalizadas.
Vamos supor que você queira criar um StudentNotFoundException
que contenha uma propriedade StudentName
.
Para criar um ponto de extremidade personalizado, siga estas etapas:
Crie uma classe que herda de Exception. O nome da classe deve terminar com "Exceção":
public class StudentNotFoundException : Exception { }
Public Class StudentNotFoundException
Inherits Exception
End Class
Adicione os construtores padrão:
public class StudentNotFoundException : Exception
{
public StudentNotFoundException() { }
public StudentNotFoundException(string message)
: base(message) { }
public StudentNotFoundException(string message, Exception inner)
: base(message, inner) { }
}
Public Class StudentNotFoundException
Inherits Exception
Public Sub New()
End Sub
Public Sub New(message As String)
MyBase.New(message)
End Sub
Public Sub New(message As String, inner As Exception)
MyBase.New(message, inner)
End Sub
End Class
Defina todas as propriedades e construtores adicionais:
public class StudentNotFoundException : Exception
{
public string StudentName { get; }
public StudentNotFoundException() { }
public StudentNotFoundException(string message)
: base(message) { }
public StudentNotFoundException(string message, Exception inner)
: base(message, inner) { }
public StudentNotFoundException(string message, string studentName)
: this(message)
{
StudentName = studentName;
}
}
Public Class StudentNotFoundException
Inherits Exception
Public ReadOnly Property StudentName As String
Public Sub New()
End Sub
Public Sub New(message As String)
MyBase.New(message)
End Sub
Public Sub New(message As String, inner As Exception)
MyBase.New(message, inner)
End Sub
Public Sub New(message As String, studentName As String)
Me.New(message)
StudentName = studentName
End Sub
End Class
Você criou uma exceção personalizada e pode lançá-la em qualquer lugar com um código como o seguinte:
throw new StudentNotFoundException("The student cannot be found.", "John");
Throw New StudentNotFoundException("The student cannot be found.", "John")
O problema com a linha anterior é que "The student cannot be found."
é apenas uma cadeia de caracteres constante. Em um aplicativo localizado, convém ter mensagens diferentes dependendo da cultura do usuário.
Assemblies satélite são uma boa maneira de fazer isso. Um assembly satélite é um DLL que contém recursos para uma linguagem específica. Quando você solicita recursos específicos em tempo de execução, o CLR localiza esse recurso dependendo da cultura do usuário. Se nenhum assembly satélite for encontrado para essa cultura, serão usados os recursos da cultura padrão.
Para criar mensagens de exceção localizadas:
Crie uma nova pasta chamada Recursos para armazenar os arquivos de recurso.
Adicione um novo arquivo de recurso a ela. Para fazer isso no Visual Studio, clique com o botão direito do mouse na pasta no Gerenciador de Soluções e selecione Adicionar>Novo item>Arquivo de recursos . Nomeie o arquivo como ExceptionMessages.resx. Este é o arquivo de recursos padrão.
Adicione um par de nome/valor para sua mensagem de exceção, como mostra a imagem a seguir:
Adicione um novo arquivo de recurso para francês. Nomei-o como ExceptionMessages.fr-FR.resx.
Adicione um par de nome/valor para a mensagem de exceção novamente, mas com um valor em francês:
Depois de compilar o projeto, a pasta de saída de build deve conter a pasta fr-FR com um arquivo .dll, que é o assembly satélite.
Você lança a exceção com código como o seguinte:
var resourceManager = new ResourceManager("FULLY_QUALIFIED_NAME_OF_RESOURCE_FILE", Assembly.GetExecutingAssembly());
throw new StudentNotFoundException(resourceManager.GetString("StudentNotFound"), "John");
Dim resourceManager As New ResourceManager("FULLY_QUALIFIED_NAME_OF_RESOURCE_FILE", Assembly.GetExecutingAssembly())
Throw New StudentNotFoundException(resourceManager.GetString("StudentNotFound"), "John")
Observação
Se o nome do projeto for TestProject
e o arquivo de recurso ExceptionMessages.resx residir na pasta Resources do projeto, o nome totalmente qualificado do arquivo de recurso será TestProject.Resources.ExceptionMessages
.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
17 de mar., 23 - 21 de mar., 23
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Módulo
Criar e gerar exceções em aplicativos de console C# - Training
Este módulo explora o processo de criação, geração e captura de exceções personalizadas em um aplicativo de console C#. As atividades práticas fornecem experiência para personalizar propriedades de exceção, gerar exceções e usar as propriedades de exceção para atenuar a exceção em um bloco catch.