none
Try Catch ????? RRS feed

  • Pergunta

  •  

    Bom Dia!

    Pessoal,

    Eu estou com o seguinte problema:

    Ao clicar no botão salvar em minha tela, está caindo no Catch, porém, não encontrei erro algum, então, resolvi comentar o try catch para que o visual studio me aponte o erro no código, porém, ao comentar conforme código abaixo, não apontou erro algum e o registro foi salvo.

    O que pode estar acontecendo, alguém pode me dar uma força no código abaixo, talvez alguma coisa que eu não esteja enxergando.

    Obrigado!

    Private Sub BtnSalvar_Click(sender As Object, e As EventArgs) Handles BtnSalvar.Click
            'Try
            Dim DataInicioPrevUSA = Convert.ToDateTime(DtpDataInicio.Text).ToString("yyyy-MM-dd")
                Dim DataFimPrevUSA = Convert.ToDateTime(DtpDataFim.Text).ToString("yyyy-MM-dd")
                Dim DataCadUSA = Convert.ToDateTime(Date.Now).ToString("yyyy-MM-dd")

                Dim Status As String = "Realizado"
                Dim OS = LblOsPreventiva.Text
                MsgBox(OS)
                con.Open()
                Dim strBaixaOs As String = ""
                Dim sqlBaixaOsCommand As New MySqlCommand
                strBaixaOs = "Update man_sol_preventiva Set ObservacoesPrev = '" & TXTObservacoes.Text & "', DataIniPrev = '" &
                        DataInicioPrevUSA & "', HrIniPrev = '" & MskHoraInicio.Text & "', DataFimPrev = '" &
                        DataFimPrevUSA & "', HrFimPrev = '" & MskHoraFim.Text & "', Status = '" &
                        Status & "', OperadorManutPrev = '" & MdiMatrix.TSSUsuario.Text & "', DataCadastro = '" & DataCadUSA & "', UsuarioCad = '" & MdiMatrix.TSSUsuario.Text & "' Where OSPrev = '" & OS & "'"
                'Executa o comando update
                sqlBaixaOsCommand.Connection = con
                sqlBaixaOsCommand.CommandText = strBaixaOs
                sqlBaixaOsCommand.ExecuteNonQuery()
                con.Close()
            'Catch ex As Exception
            'MessageBox.Show("Erro ao tentar alterar o registro, verifique os dados e tente novamente, se o erro persistir, entre em contato com o administrador do sistema. Nenhum dado foi salvo!",
            '    "Erro ao tentar alterar o registro!",
            '    MessageBoxButtons.OK,
            '    MessageBoxIcon.Exclamation,
            '    MessageBoxDefaultButton.Button1)
            'End Try
        End Sub
    quinta-feira, 3 de outubro de 2019 11:07

Respostas

  • Boa tarde.

    Faça este teste para localizar a linha com suposto erro.

    Catch ex As Exception
            MessageBox.Show(ex.ToString())
           
     End Try


    MARIANO1776

    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    quinta-feira, 3 de outubro de 2019 15:58
  • Rodrigo Rx3Info,

       Talvez isso te ajude:

       1 - Dentro do "catch" existe a variável "ex", e essa variável tem a propriedade "Message", fica assim: "ex.Message". O conteúdo mostra o que aconteceu.
       2 - Digite "Ctrl"+"Alt"+"E" para abrir a janela "Configurações de Exceção", marque todas as caixas, quando um erro ocorrer o Visual Studio NÃO ignorará.
       3 - Depure esse trecho de código com "F10" e "F11", acompanhe o valor das vairáveis declarando-as dentro do "Menu Watch".
       
    []'s,
    Fabio I.
    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    quinta-feira, 3 de outubro de 2019 11:22
  • Boa Tarde!

    Mariano,

    Eu coloquei o  MessageBox.Show(ex.ToString()) conforme sua orientação e me exibiu a da imagem abaixo, porém, perceba que eu abro e fecho a conexão, conforme código postado.

    O estranho é que ele exibe a mensagem, mas funciona perfeitamente, então, eu resolvi deixar sem o MessageBox do Catch ele não da a mensagem de erro e funciona perfeitamente.


    quinta-feira, 3 de outubro de 2019 20:12
  • Qual é a linha 99?

    Se for esta:

     con.Open()

    É porque a conexão está aberta em outra subrotina ou função.

    Verifique, mas para ter certeza, tente isto:

      If CON.State = ConnectionState.Closed Then CON.Open()

     


    MARIANO1776


    • Editado Mariano1776 quinta-feira, 3 de outubro de 2019 21:45
    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    quinta-feira, 3 de outubro de 2019 21:44
  • Rodrigo Rx3Info,

       Cara, não faça isso, não deixe seu código sem tratamento, mas para frente esse erro pode estar estragando de alguma forma seu programa.

    []'s,
    Fabio.
    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    sexta-feira, 4 de outubro de 2019 11:04
  • Bom Dia!

    Pessoal,

    Eu resolvi da seguinte forma: Eu fui comentando todos os con.open e con.close dentro da classe form e rodei o aplicativo, conforme foi dando erro, eu fui ativando, até que sobraram 2 blocos que eu que quando eu volto o con.open ele volta a dar o erro, eu não entendi o porque, pois em todos os blocos de código que eu vou conectar no banco de dados eu coloco con.open e no final coloco con.close, mas vou tentar entender o porque, o que não estou enxergando dentro da classe, mas está funcionando, já simulei os erros e está funcionando.

    Obrigado peal força de vocês.

    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    sexta-feira, 4 de outubro de 2019 13:46

Todas as Respostas

  • Rodrigo Rx3Info,

       Talvez isso te ajude:

       1 - Dentro do "catch" existe a variável "ex", e essa variável tem a propriedade "Message", fica assim: "ex.Message". O conteúdo mostra o que aconteceu.
       2 - Digite "Ctrl"+"Alt"+"E" para abrir a janela "Configurações de Exceção", marque todas as caixas, quando um erro ocorrer o Visual Studio NÃO ignorará.
       3 - Depure esse trecho de código com "F10" e "F11", acompanhe o valor das vairáveis declarando-as dentro do "Menu Watch".
       
    []'s,
    Fabio I.
    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    quinta-feira, 3 de outubro de 2019 11:22
  • Boa tarde.

    Faça este teste para localizar a linha com suposto erro.

    Catch ex As Exception
            MessageBox.Show(ex.ToString())
           
     End Try


    MARIANO1776

    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    quinta-feira, 3 de outubro de 2019 15:58
  • Boa Tarde!

    Mariano,

    Eu coloquei o  MessageBox.Show(ex.ToString()) conforme sua orientação e me exibiu a da imagem abaixo, porém, perceba que eu abro e fecho a conexão, conforme código postado.

    O estranho é que ele exibe a mensagem, mas funciona perfeitamente, então, eu resolvi deixar sem o MessageBox do Catch ele não da a mensagem de erro e funciona perfeitamente.


    quinta-feira, 3 de outubro de 2019 20:12
  • Qual é a linha 99?

    Se for esta:

     con.Open()

    É porque a conexão está aberta em outra subrotina ou função.

    Verifique, mas para ter certeza, tente isto:

      If CON.State = ConnectionState.Closed Then CON.Open()

     


    MARIANO1776


    • Editado Mariano1776 quinta-feira, 3 de outubro de 2019 21:45
    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    quinta-feira, 3 de outubro de 2019 21:44
  • Rodrigo Rx3Info,

       Cara, não faça isso, não deixe seu código sem tratamento, mas para frente esse erro pode estar estragando de alguma forma seu programa.

    []'s,
    Fabio.
    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    sexta-feira, 4 de outubro de 2019 11:04
  • Bom dia.

    Ao que parece ele está usando uma variável pública "con".

    Embora funcione, eu prefiro utilizar sempre local.

    Dim con as new conection...

    Muito mais fácil tratar e manter.


    MARIANO1776

    sexta-feira, 4 de outubro de 2019 11:24
  • Bom Dia!

    Pessoal,

    Eu resolvi da seguinte forma: Eu fui comentando todos os con.open e con.close dentro da classe form e rodei o aplicativo, conforme foi dando erro, eu fui ativando, até que sobraram 2 blocos que eu que quando eu volto o con.open ele volta a dar o erro, eu não entendi o porque, pois em todos os blocos de código que eu vou conectar no banco de dados eu coloco con.open e no final coloco con.close, mas vou tentar entender o porque, o que não estou enxergando dentro da classe, mas está funcionando, já simulei os erros e está funcionando.

    Obrigado peal força de vocês.

    • Marcado como Resposta Rodrigo Rx3Info sexta-feira, 4 de outubro de 2019 13:46
    sexta-feira, 4 de outubro de 2019 13:46