No erro demonstrativo (Visual Basic)
Permite que um erro - rotina de manipulação e especifica o local da rotina dentro de um procedimento; também pode ser usado para desabilitar um erro-rotina de manipulação.
Sem um On Error demonstrativo, qualquer em time de execução erro que ocorre é fatal: uma mensagem de erro é exibida e a execução pára.
Sempre que possível, sugerimos que você use de exceção estruturada no seu código de manipulação, em vez de recorrer à manipulação de exceção não estruturada e o On Error demonstrativo. Para obter mais informações, consulte Manipulação da Exceção Estruturada no Visual Basic.
On Error { GoTo [ line | 0 | -1 ] | Resume Next }
Partes
GoToline
Permite que o erro-rotina que começa na linha especificada no necessária de manipulaçãoline argumento. The line argumento é qualquer número de linha ou rótulo. Se um em time de execução erro ocorrer, controlar as ramificações para a linha especificada, tornando a rotina de tratamento de erros ativo.A linha especificada deve estar no mesmo procedimento sistema autônomo a On Error demonstrativo ou um erro em time de compilar irá ocorrer.GoTo 0
Desativa habilitada erro manipulador no procedimento corrente e redefine-lo para Nothing.GoTo -1
Desativa a exceção enabled do procedimento corrente e redefine-lo para Nothing.Resume Next
Especifica que quando um em time de execução erro ocorrer, o controle vai para a demonstrativo imediatamente seguinte a demonstrativo em que ocorreu o erro e execução continua a partir desse ponto.Use este formulário em vez de On Error GoTo Quando o acesso a objetos.
Comentários
Um "ativado" erro manipulador é aquele que é ativado por umOn Error demonstrativo. Um identificador de erro "ativo" é um manipulador habilitado que está no processo de tratamento de erro.
Se ocorrer um erro enquanto uma rotina de tratamento de erros está ativo entre (a ocorrência do erro e um Resume, Exit Sub, Exit Function, ou Exit Property demonstrativo), tratamento de erros do procedimento corrente não é possível manipular o erro. O controle retorna ao procedimento de chamada.
Se o procedimento de chamada tem uma rotina de tratamento de erros ativada, ela será ativada para manipular o erro.Se o procedimento de chamada erro manipulador também estiver ativo, passa o controle através de procedimentos chamados anteriores até que um habilitado mas inativo, erro manipulador é encontrado.Se tal nenhum manipulador de erro for encontrado, o erro é fatal no ponto em que ele realmente ocorreu.
Sempre que o manipulador de erro passa controle novamente para um procedimento de chamada, esse procedimento torna-se o procedimento corrente.Depois que um erro é tratado por uma rotina de tratamento de erros em qualquer procedimento, a execução reinicia no procedimento corrente no ponto de designado pelo Resume demonstrativo.
Observação: |
---|
Uma rotina de tratamento de erros não é um Sub procedimento ou uma Function procedimento. É uma seção do código marcada por um rótulo ou número de linha. |
Propriedade Número
Rotinas de tratamento de erros contam com o valor de Number propriedade das Err objeto para determinar a causa do erro. A rotina deve testar ou salvar valores de propriedade relevante no Err objeto antes que qualquer Outros erro possa ocorrer ou antes de um procedimento que pode causar um erro é chamado. Os valores de propriedade no Err objeto refletem apenas o erro mais recente. A mensagem de erro associada a Err.Number está contido em Err.Description.
Instrução Throw
Um erro é gerado com o Err.Raise método define a Exception propriedade a uma instância recém-criada da Exception classe. Para oferecer suporte à geração de exceções de tipos de exceção derivadas, um Throw há suporte para a demonstrativo no linguagem. Isso leva a um único parâmetro que é a instância da exceção ser acionada.O exemplo a seguir mostra como esses recursos podem ser usados com a suporte de manipulação de exceção existente:
On Error GoTo Handler
Throw New DivideByZeroException()
Handler:
If (TypeOf Err.GetException() Is DivideByZeroException) Then
' Code for handling the error is entered here.
End If
Observe que o On Error GoTo demonstrativo faz o ajuste de registro de todos os erros, independentemente da classe de exceção.
On Error Resume Next
On Error Resume Next faz com que a execução continue com a demonstrativo imediatamente seguinte a demonstrativo que causou o em time de execução erro, ou com a demonstrativo imediatamente seguinte a mais recente telefonar de procedimento que contém o On Error Resume Next demonstrativo. Essa demonstrativo permite a execução continuar independentemente de um erro em time de execução.Você pode colocar a rotina de tratamento de erros onde o erro ocorreria em vez da transferência de controle para outro local dentro do procedimento.An On Error Resume Next demonstrativo fica inativo quando outro procedimento é chamado, para que você deve executar uma On Error Resume Next demonstrativo em cada chamada rotina se desejar embutido tratamento de erro dentro dessa rotina.
Observação: |
---|
O On Error Resume Next construção pode ser preferível On Error GoTo Quando o tratamento de erros gerado durante o acesso a outros objetos. Verificando Err Após cada interação com um objeto remove a ambigüidade sobre qual objeto foi acessado pelo código. Você pode ter certeza de qual objeto colocado o código de erro em Err.Number, bem sistema autônomo o objeto que originalmente gerou o erro (o objeto especificado em Err.Source). |
On Error GoTo 0
On Error GoTo 0 Desativa erro tratamento do procedimento corrente. Ela não especifica a linha 0 sistema autônomo o início do erro-manipulação de código, mesmo que o procedimento contenha uma linha numerados de 0.Sem um On Error GoTo 0 demonstrativo, um erro manipulador é desabilitado automaticamente quando um procedimento é encerrado.
On Error GoTo -1
On Error GoTo -1 desativa a exceção do procedimento corrente. Não especificar -1 sistema autônomo o início de linha do erro-manipulação de código, mesmo que o procedimento contenha uma linha numerada -1.Sem um On Error GoTo -1 demonstrativo, uma exceção é desabilitado automaticamente quando um procedimento é finalizado.
Para impedir que o código de tratamento de erros em execução quando nenhum erro, coloque um Exit Sub, Exit Function, ou Exit Property demonstrativo imediatamente antes da rotina de tratamento de erros, sistema autônomo no fragmento a seguir:
Public Sub InitializeMatrix(ByVal Var1 As Object, ByVal Var2 As Object)
On Error GoTo ErrorHandler
' Insert code that might generate an error here
Exit Sub
ErrorHandler:
' Insert code to handle the error here
Resume Next
End Sub
Aqui, o erro-código de manipulação segue o Exit Sub demonstrativo e precede o End Sub demonstrativo para separar o fluxo do procedimento. Você pode colocar erro-código em qualquer lugar em um procedimento de tratamento.
Erros untrapped
Erros untrapped em objetos são retornados para o aplicativo de controle quando o objeto é executado sistema autônomo um arquivo executável.Dentro do ambiente de desenvolvimento untrapped erros são retornados para o aplicativo de controle somente se as opções adequadas forem conjunto.Consulte a documentação do seu aplicativo host para uma descrição dos quais opções devem ser definidas durante a depuração, como configurá-las e se o host pode criar classes.
Se você criar um objeto que acessa a outros objetos, você deve tentar tratar quaisquer erros sem tratamento eles passam novamente.Se você não pode mapear os códigos de erro no Err.Number um dos seus próprios erros e, em seguida, passá-los de volta para o chamador do seu objeto. Você deve especificar seu erro adicionando seu código de erro para o VbObjectError constante. Por exemplo, se o seu código de erro for 1052, atribua-lo da seguinte maneira:
Err.Number = vbObjectError + 1052
Cuidado: |
---|
Sistema erro s durante as chamadas para bibliotecas de vínculo dinâmico (DLLs) não aumente exceções e não podem sofrer ajuste de registro no Windows com o Visual Basic erro ajuste de registro.Ao chamar funções DLL, você deve verificar cada valor retornado para o sucesso ou fracasso (de acordo com a especificações API) e em caso de falha, verifique o valor Err objeto LastDLLError propriedade. |
Exemplo
Este exemplo usa primeiro o On Error GoTo demonstrativo para especificar o local de uma rotina de tratamento de erros dentro de um procedimento. No exemplo, uma tentativa de dividir por zero gera erro número 6.O erro é tratado na rotina de tratamento de erros e controle, em seguida, é retornado para a demonstrativo que causou o erro.The On Error GoTo 0 demonstrativo desativa a ajuste de registro de erro. Em seguida, a On Error Resume Next demonstrativo é usada para adiar o erro de ajuste de registro para que o contexto para o erro gerado pela próxima demonstrativo pode ser conhecido para determinados. Observe que Err.Clear é usado para desmarcar o Err Propriedades do objeto após o erro é manipulado.
Public Sub OnErrorDemo()
On Error GoTo ErrorHandler ' Enable error-handling routine.
Dim x As Integer = 32
Dim y As Integer = 0
Dim z As Integer
z = x / y ' Creates a divide by zero error
On Error GoTo 0 ' Turn off error trapping.
On Error Resume Next ' Defer error trapping.
z = x / y ' Creates a divide by zero error again
If Err.Number = 6 Then
' Tell user what happened. Then clear the Err object.
Dim Msg As String
Msg = "There was an error attempting to divide by zero!"
MsgBox(Msg, , "Divide by zero error")
Err.Clear() ' Clear Err object fields.
End If
Exit Sub ' Exit to avoid handler.
ErrorHandler: ' Error-handling routine.
Select Case Err.Number ' Evaluate error number.
Case 6 ' Divide by zero error
MsgBox("You attempted to divide by zero!")
' Insert code to handle this error
Case Else
' Insert code to handle other situations here...
End Select
Resume Next ' Resume execution at same line
' that caused the error.
End Sub
Requisitos
Namespace: Microsoft.VisualBasic
Assembly: Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)
Consulte também
Tarefas
Como: Obtenha informações sobre o Visual Basic em tempo de execução Errors
Referência
Instrução EndMétodo My.Application.Exit
Declaração Saída (Visual Basic)