Lançar erros

10/01/2015

Olá a todos.
Cada vez que uso crio um método em c# uso a estrutura:
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

Guilherme

Respostas

12/01/2015

Joel Rodrigues

Você pode fazer um try-catch e, ao invés de lançar outra exceção, apenas mostrar a mensagem em um MessageBox:
catch(Exception ex)
{
   MessageBox.Show(ex.Message);
}


Isso no click do botão.
Responder Citar

16/01/2015

Guilherme

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?
Responder Citar

19/01/2015

Pjava

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:
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:
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  foi priorizado com sucesso para o(a) Analista .
		/// </summary>
		public static string MSG002Sucesso = "SUC-002 - Processo  foi priorizado com sucesso para o(a) Analista .";

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

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

		/// <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  excluido com sucesso.
		/// </summary>
		public static string MSG008Sucesso = "SUC-008 - Avalista  excluido com sucesso.";

		/// <summary>
		/// Avalista  excluido com sucesso.
		/// </summary>
		public static string MSG009Sucesso = "SUC-009 - Tituar  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 
		/// </summary>
		public static string MSG004Cadastro = "CAD-004 - Não é permitido excluir Avalisas no processo de .";
		/// <summary>
		/// Sucesso ao Salvar ficha cadastral no processo de 
		/// </summary>
		public static string MSG005Cadastro = "CAD-005 - Erro. .";
		
		/// <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 
		/// </summary>
		public static string MSG0016Cadastro = "CAD-016 - Não é permitido excluir Avalisas no processo de .";
		
		/// <summary>
		/// Excluir avalista do processo
		/// </summary>
		public static string MSG0017Cadastro = "CAD-017 - Sucesso. .";
		
		/// <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  foi priorizado com sucesso para o(a) Analista .
		/// </summary>
		public static string MSG001Gestor = "GES-001 - Processo  foi priorizado com sucesso para o(a) Analista .";

		/// <summary>
		/// Processo , teve retirada a priorização com sucesso.
		/// </summary>
		public static string MSG002Gestor = "GES-002 - Processo , 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

	}
}
Responder Citar

03/05/2015

Maria Araújo

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:
//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?
Responder Citar

03/05/2015

Jothaz

Maria Araújo tenta assim:


                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

    
                }
Responder Citar

03/05/2015

Jothaz

Maria Araújo tenta assim:


                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

    
                }
Responder Citar

04/05/2015

Thiago Santana

Maria Araújo tenta assim:

                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:

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
 
 
}

Responder Citar

04/05/2015

Alisson

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.
Responder Citar