none
Continuar For Each após Catch RRS feed

  • Pergunta

  • Meu sistema de automação de testes está com o seguinte problema:

    Após informar uma letra em um campo que faça calculo no lostfocus, a aplicação vai para o Catch, até ai tudo como o esperado, armazeno as informações do erro nos devidos locais porém.. ao invés de retornar para o for each para continuar percorrendo os demais campos, está indo para o end try.

     

    Public Sub TestaNumerico(ByVal frm As Form)
        Dim MsgErro As String
        Dim CampoErro As String
        Dim CharErro As String
        Dim FormErro As String
        Try
          Dim meuForm As Type = frm.GetType()
          Dim campos As FieldInfo() = meuForm.GetFields(BindingFlags.Instance Or BindingFlags.NonPublic)
          For Each campo As FieldInfo In campos
            If campo.FieldType.Name.ToLower = "textbox" Then
              Dim t As TextBox = DirectCast(campo.GetValue(frm), TextBox)
              t.Text = "s"
              t.Focus()
              CampoErro = t.Name
              CharErro = t.Text
              FormErro = frm.Name
            End If
          Next
        Catch ex As Exception
          MsgErro = ex.Message
    
      ->  'Aqui preciso que volte para continuar o For Each
    
        End Try
      End Sub

     

    Alguém pode me dar uma luz?

     

    Desde já Agradeço!

    sexta-feira, 3 de setembro de 2010 01:08

Respostas

  • Coloque o Seu Try Catch Dentro do For Each Assim:

    Public Sub TestaNumerico(ByVal frm As Form)
      Dim MsgErro As String
      Dim CampoErro As String
      Dim CharErro As String
      Dim FormErro As String
      Dim meuForm As Type = frm.GetType()
      Dim campos As FieldInfo() = meuForm.GetFields(BindingFlags.Instance Or BindingFlags.NonPublic)
      For Each campo As FieldInfo In campos
       Try
        If campo.FieldType.Name.ToLower = "textbox" Then
         Dim t As TextBox = DirectCast(campo.GetValue(frm), TextBox)
         t.Text = "s"
         t.Focus()
         CampoErro = t.Name
         CharErro = t.Text
         FormErro = frm.Name
        End If
       Catch ex As Exception
        MsgErro = ex.Message
    
        'Aqui preciso que volte para continuar o For Each
    
       End Try
      Next
     End Sub
    

    []s.

    Alan Cossari.

    Twitter Facebook
    sexta-feira, 3 de setembro de 2010 12:28

Todas as Respostas

  • Coloque o Seu Try Catch Dentro do For Each Assim:

    Public Sub TestaNumerico(ByVal frm As Form)
      Dim MsgErro As String
      Dim CampoErro As String
      Dim CharErro As String
      Dim FormErro As String
      Dim meuForm As Type = frm.GetType()
      Dim campos As FieldInfo() = meuForm.GetFields(BindingFlags.Instance Or BindingFlags.NonPublic)
      For Each campo As FieldInfo In campos
       Try
        If campo.FieldType.Name.ToLower = "textbox" Then
         Dim t As TextBox = DirectCast(campo.GetValue(frm), TextBox)
         t.Text = "s"
         t.Focus()
         CampoErro = t.Name
         CharErro = t.Text
         FormErro = frm.Name
        End If
       Catch ex As Exception
        MsgErro = ex.Message
    
        'Aqui preciso que volte para continuar o For Each
    
       End Try
      Next
     End Sub
    

    []s.

    Alan Cossari.

    Twitter Facebook
    sexta-feira, 3 de setembro de 2010 12:28
  • Alan, peço desculpas a falta de atenção.. era apenas uma questão de lógica, sua ajuda foi de grande utilidade.

     

    Muito Obrigado.

    sexta-feira, 3 de setembro de 2010 16:24