Array
(
)

Lançar erros

Guilherme
   - 10 jan 2015

Olá a todos.
Cada vez que uso crio um método em c# uso a estrutura:
Citação:

public void inserePaciente(parametros) {
try {
}
catch (Exception exception) {
throw new Exception(exception.Message);
}
}

Este método é chamado quando clico no button Salvar.
Mas, se eu tiver um campo na minha tela não preenchido e na base de dados ele for NOT NULL, um erro é disparado no catch, mostrando o catch acima
Outro erro pode ser lançado se tiver uma palavra num campo do tipo INT.
O que gostaria que me dessem uma ajuda é como lançar para a tela uma MessageBox identificando o erro que ocorreu, sem que apareça o código c#.
Por exemplo a mensagem: "Deve preencher o campo Nome", ou "Idade tem de ser um valor e não uma palavra"
Obrigado a todos

Joel Rodrigues
   - 12 jan 2015

Você pode fazer um try-catch e, ao invés de lançar outra exceção, apenas mostrar a mensagem em um MessageBox:
#Código

catch(Exception ex)
{
   MessageBox.Show(ex.Message);
}


Isso no click do botão.

Guilherme
   - 16 jan 2015

Mas como eu faço pra lançar, num mesmo form:
a mensagem "Digite só numeros" se o user preencher um textBox do tipo INT com caracteres
a mensagem "Campo obrigatório" se o user não preencheu um textBox do tipo NOT NULL?

Pjava
   - 19 jan 2015

Você pode criar uma classe apenas para mensagens e essa classe ter um ID para mensagem. Depois em seus formulários, você vai disparando as mensagens, de acordo onde elas forem sendo disparadas. Um exemplo de como eu uso aqui comigo:
#Código

catch (Exception Ex)
			{
				Mensagem = (wucMensagens)Page.Master.FindControl("wucMasterMensagens");
				Mensagem.ExibirMensagem(wucMensagens.TipoAlerta.Erro, Ex.Source, Ex.Message, Ex.StackTrace);
			}


Aí você apenas adapta de acordo com sua necessidade. Minha classe mensagens:
#Código
namespace Global
{
	/// <summary>
	/// Classe com todas as mensagens do sistema
	/// </summary>
	public static class Mensagens
	{

		#region Mensagem de Sucesso

		/// <summary>
		/// Ficha cadastral salva com sucesso.
		/// </summary>
		public static string MSG001Sucesso = "SUC-001 - Ficha cadastral salva com sucesso.";

		/// <summary>
		/// Processo {0} foi priorizado com sucesso para o(a) Analista {1}.
		/// </summary>
		public static string MSG002Sucesso = "SUC-002 - Processo {0} foi priorizado com sucesso para o(a) Analista {1}.";

		/// <summary>
		/// Processo {0}, teve retirada a priorização com sucesso.
		/// </summary>
		public static string MSG003Sucesso = "SUC-003 - Processo {0}, teve retirada a priorização com sucesso.";

		/// <summary>
		/// Acesso concedido no perfil {0}.
		/// </summary>
		public static string MSG004Sucesso = "SUC-004 - Acesso concedido no perfil {0}.";

		/// <summary>
		/// Processo cancelado com sucesso.
		/// </summary>
		public static string MSG005Sucesso = "SUC-005 - Processo cancelado com sucesso.";

		/// <summary>
		/// Consulta ao ICS realizada com sucesso.
		/// </summary>
		public static string MSG006Sucesso = "SUC-006 - Consulta ao ICS realizada com sucesso.";

		/// <summary>
		/// Análise salva com sucesso com sucesso.
		/// </summary>
		public static string MSG007Sucesso = "SUC-007 - Análise salva com sucesso com sucesso.";

		/// <summary>
		/// Avalista {0} excluido com sucesso.
		/// </summary>
		public static string MSG008Sucesso = "SUC-008 - Avalista {0} excluido com sucesso.";

		/// <summary>
		/// Avalista {0} excluido com sucesso.
		/// </summary>
		public static string MSG009Sucesso = "SUC-009 - Tituar {0} excluido com sucesso.";

		/// <summary>
		/// Ficha Cadastral enviada para análise com sucesso.";Mensa
		/// </summary>
		public static string MSG010Sucesso = "SUC-010 - Ficha Cadastral enviada para análise com sucesso.";

		#endregion

		#region Mensagens de Erro

		/// <summary>
		/// Mensagem genérica do sistema para erros não tratados
		/// </summary>
		public static string MSG001Geral = "ERR-001 - Erro inesperado, tente novamente. Se persistir o erro, favor contatar o administrador do sistema.";

		#endregion

		#region Mensagem de Cadastro

		/// <summary>
		/// Mensagem para Data de Nascimento Inválida
		/// </summary>
		public static string MSG001Cadastro = "CAD-001 - Data de Nascimento Inválida em Dados Cadastrais.";
		
		/// <summary>
		/// O Processo não pode ser alterado.
		/// </summary>
		public static string MSG003Cadastro = "CAD-003 - O Processo não pode ser alterado.";
		
		/// <summary>
		/// Não é permitido excluir Avalisas no processo de {0}
		/// </summary>
		public static string MSG004Cadastro = "CAD-004 - Não é permitido excluir Avalisas no processo de {0}.";
		/// <summary>
		/// Sucesso ao Salvar ficha cadastral no processo de {0}
		/// </summary>
		public static string MSG005Cadastro = "CAD-005 - Erro. {0}.";
		
		/// <summary>
		/// O CPF informado é invalido
		/// </summary>
		public static string MSG006Cadastro = "CAD-006 - O CPF informado é invalido.";

		/// <summary>
		/// O CNPJ informado é invalido
		/// </summary>
		public static string MSG007Cadastro = "CAD-007 - O CNPJ informado é invalido.";

		/// <summary>
		/// A Pessoa informada para ser Titular está na Fase 1 de outro processo
		/// </summary>
		public static string MSG008Cadastro = "CAD-008 - A Pessoa informada para ser Titular está na Fase 1 de outro processo.";

		/// <summary>
		/// A Pessoa informada para ser Avalista está na Fase 1 de outro processo
		/// </summary>
		public static string MSG009Cadastro = "CAD-009 - A Pessoa informada para ser Avalista está na Fase 1 de outro processo.";

		/// <summary>
		/// Processo não localizado, tente novamente ou contate o administrador
		/// </summary>
		public static string MSG0010Cadastro = "CAD-010 - Processo não localizado, tente novamente ou contate o administrador.";

		/// <summary>
		/// O Cadastro não está atualizado, favor enviar os documentos solicitados
		/// </summary>
		public static string MSG0011Cadastro = "CAD-011 - O Cadastro não está atualizado, favor enviar os documentos solicitados.";
		
		/// <summary>
		/// O Cadastro está atualizado, basta Enviar o Processo para Análise
		/// </summary>
		public static string MSG0012Cadastro = "CAD-012 - O Cadastro está atualizado, basta Enviar o Processo para Análise.";
		
		/// <summary>
		/// Data de Nascimento Inválida em Dados Cadastrais
		/// </summary>
		public static string MSG0013Cadastro = "CAD-013 - Data de Nascimento Inválida em Dados Cadastrais.";
		
		/// <summary>
		/// Data de Constituição Inválida em Dados Cadastrais
		/// </summary>
		public static string MSG0014Cadastro = "CAD-014 - Data de Constituição Inválida em Dados Cadastrais.";
		
		/// <summary>
		/// Data do "Cliente desde" inválida
		/// </summary>
		public static string MSG0015Cadastro = "CAD-015 - Data do \"Cliente desde\" inválida.";

		/// <summary>
		/// Não é permitido excluir Avalisas no processo de {0}
		/// </summary>
		public static string MSG0016Cadastro = "CAD-016 - Não é permitido excluir Avalisas no processo de {0}.";
		
		/// <summary>
		/// Excluir avalista do processo
		/// </summary>
		public static string MSG0017Cadastro = "CAD-017 - Sucesso. {0}.";
		
		/// <summary>
		/// 
		/// </summary>
		public static string MSG0018Cadastro = "CAD-018 - ";
		
		/// <summary>
		/// 
		/// </summary>
		public static string MSG0019Cadastro = "CAD-019 - ";
		
		/// <summary>
		/// 
		/// </summary>
		public static string MSG0020Cadastro = "CAD-020 - ";
		
		#endregion

		#region Mensagem de Documentos



		#endregion

		#region Mensagens de Pendências

		/// <summary>
		/// Mensagem para Ocorrência já existente
		/// </summary>
		public static string MSG001Pendencias = "PEN-001 - Já existe ocorrência aberta para este Cliente";

		/// <summary>
		/// Mensagem para Pendência já existente
		/// </summary>
		public static string MSG002Pendencias = "PEN-002 - Já existe Pendência aberta para este Cliente";
		
		#endregion

		#region Mensagens de Consorciados

		/// <summary>
		/// Você não têm permissão para o Grupo e Cota informados.
		/// </summary>
		public static string MSG001Consorciado = "CON-001 - Você não têm permissão para o Grupo e Cota informados.";

		/// <summary>
		/// 
		/// </summary>
		public static string MSG002Consorciado = "CON-002 - Existe um processo na Fase 1 para o Cliente informado.";

		/// <summary>
		/// 
		/// </summary>
		public static string MSG003Consorciado = "CON-003 - Existe um processo em andamento para o Grupo e Cota informado.";

		/// <summary>
		/// 
		/// </summary>
		public static string MSG004Consorciado = "CON-004 - Não existe bem alienado para o Grupo e Cota informado.";

		/// <summary>
		/// 
		/// </summary>
		public static string MSG005Consorciado = "CON-005 - O Grupo e a Cota informados, estão inativos.";

		/// <summary>
		/// 
		/// </summary>
		public static string MSG006Consorciado = "CON-006 - Crédito indisponível para a Cota informada.";
		
		/// <summary>
		/// 
		/// </summary>
		public static string MSG007Consorciado = "CON-007 - Existe Titular(es) com valores \"em aberto\" para o Grupo e Cota informado.";

		/// <summary>
		/// 
		/// </summary>
		public static string MSG008Consorciado = "CON-008 - Problemas com o Endereço impedem o prosseguimento deste processo. Entre em contato com o Consórcio Scania para poder prosseguir.";

		#endregion

		#region Mensagens de Integração

		/// <summary>
		/// Falha ao consultar ICS.
		/// </summary>
		public static string MSG001Integracao = "INT-001 - Falha ao consultar ICS.";

		/// <summary>
		/// Erro ao Salvar a consulta do ICS.
		/// </summary>
		public static string MSG002Integracao = "INT-002 - Erro ao Salvar a consulta do ICS.";

		/// <summary>
		/// PDF não foi gerado corretamento, favor informar o administrador do sistema.
		/// </summary>
		public static string MSG003Integracao = "PDF não foi gerado corretamento, favor informar o administrador do sistema.";

		#endregion

		#region Mensagens de Gestor

		/// <summary>
		/// Processo {0} foi priorizado com sucesso para o(a) Analista {1}.
		/// </summary>
		public static string MSG001Gestor = "GES-001 - Processo {0} foi priorizado com sucesso para o(a) Analista {1}.";

		/// <summary>
		/// Processo {0}, teve retirada a priorização com sucesso.
		/// </summary>
		public static string MSG002Gestor = "GES-002 - Processo {0}, teve retirada a priorização com sucesso.";


		#endregion

		#region  Mensagens de Bens

		/// <summary>
		/// Mensagem de bens seguindo a especificação: EF - Módulo Crédito - Fase 2 
		/// </summary>
		public static string MSG001Bens = "BEN-001 - Não há Bens Novos cadastrados.";

		/// <summary>
		/// Mensagem de bens seguindo a especificação: EF - Módulo Crédito - Fase 2 
		/// </summary>
		public static string MSG002Bens = "BEN-002 - Não há Bens Usados cadastrados.";

		/// <summary>
		/// Mensagem de bens seguindo a especificação: EF - Módulo Crédito - Fase 2
		/// </summary>
		public static string MSG003Bens = "BEN-003 - Não há Bens em Garantia cadastrados.";

		#endregion

		#region Mensagens Default

		/// <summary>
		/// Favor Inserir um Usuario válido na parte superior da tela
		/// </summary>
		public static string MSG0001Default = "Favor Inserir um Usuário válido na parte superior da tela.";

		#endregion

	}
}

Maria Araújo
   - 03 mai 2015

Por acaso estou a ter o mesmo problema, só não uso try catch.

Tenho um campo que não pode ser null e, no codigo do metodo de gravar faço:
#Código

//Valor não pode ser nulo
                if (tbValor.Text == "")
                {
                    MessageBox.Show("Deve preencher o campo Valor.");
                    
                }


Mas se fizer OK é lançado na mesma um erro no codigo: FormatException.

Deve faltar fazer mais alguma coisa dentro do if, como se o processo de gravação fosse cancelado até que o campo em causa fosse preenchido, para depois pressionar novamento o button GRAVAR.

Não consegui entender o raciocinio do Pjava.

Alguém consegue me ajudar?

Jothaz
   - 03 mai 2015

Maria Araújo tenta assim:

#Código


                if (tbValor.Text == "")
                {
                    MessageBox.Show("Deve preencher o campo Valor.");
                   

                    return; //Assim volta para o form e não evitando a execução do try

    
                }

Jothaz
   - 03 mai 2015

Maria Araújo tenta assim:

#Código


                if (tbValor.Text == "")
                {
                    MessageBox.Show("Deve preencher o campo Valor.");
                   

                    return; //Assim volta para o form e não evitando a execução do try

    
                }

Thiago Santana
   - 04 mai 2015


Citação:
Maria Araújo tenta assim:

#Código


                if (tbValor.Text == "")
                {
                    MessageBox.Show("Deve preencher o campo Valor.");
                   

                    return; //Assim volta para o form e não evitando a execução do try

    
                }


Outra forma:
#Código

if (tbValor.Text == string.Empty)
{
    MessageBox.Show("Deve preencher o campo Valor.");
    
 
    return; //Assim volta para o form e não evitando a execução do try
 
 
}

Alisson
|
MVP
Pontos: 3400
    04 mai 2015

Guilherme o que notei é que precisa saber qual o tipo de campo do banco de dados e mostrar uma mensagem?
Se for isso, quando você cria a classe context atraves do entyt ou context apenas ele já faz o mapeamento dos campos e você consegue pegar o tipo de campo utilizando o objeto.GetType().Name e depois fazer comparações. Ou pode criar uma classe de Regex e ao sair do campo pode exibir uma mensagem.
O que precisamos saber é o que quer que seja feito e ai conseguiremos lhe auxiliar melhor em sua duvida.