Sdílet prostřednictvím


Na výpisu chyb (Visual Basic)

Umožňuje zpracování chyb proceduru a určuje umístění rutina v rámci postupu; lze také zakázat proceduru zpracování chyb.

Bez On Error prohlášení, je závažné chybě v době spuštění, který nastane: Zobrazí se chybová zpráva a provádění zastaví.

Kdykoli je to možné, doporučujeme použít structured exception zpracování ve svém kódu, místo zpracování výjimek nestrukturovaný a On Error prohlášení.Další informace naleznete v tématu Zkuste...Úlovek...Nakonec prohlášení (Visual Basic).

[!POZNÁMKA]

Error Klíčové slovo je používán také Chyba příkazu, která je podporována z důvodů zpětné kompatibility.

On Error { GoTo [ line | 0 | -1 ] | Resume Next }

Části

Termín

Definice

GoToline

Umožňuje rutinní zpracování chyb, který začíná na řádku v požadované line argument.line Argument je libovolný řádek popisku nebo číslo řádku.Pokud dojde k chybě runtime, řízení pobočky zadaného řádku aktivace obslužná rutina chyb.Zadaný řádek musí být stejným postupem jako On Error dojde k prohlášení nebo Chyba při kompilaci.

GoTo 0

Zakáže povolené chyby zpracování v aktuální procedury a obnoví jeho Nothing.

GoTo -1

Zakáže povolena výjimka v aktuální procedury a obnoví jeho Nothing.

Resume Next

Určuje, že nastane chyba spuštění řízení přejde na příkaz bezprostředně následující příkaz, kde došlo k chybě a provádění pokračuje od tohoto místa.Tento formulář se používá spíše než On Error GoTo při přístupu k objektům.

Poznámky

[!POZNÁMKA]

Doporučujeme použít structured exception handling ve svém kódu, kdykoli je to možné, místo zpracování výjimek nestrukturovaný a On Error prohlášení.Další informace naleznete v tématu Zkuste...Úlovek...Nakonec prohlášení (Visual Basic).

Obslužná rutina chyb "povolené" je jeden, který je On Error prohlášení.Obslužná rutina chyb "aktivní" je povoleno obslužnou rutinu, která je zpracování chyby.

Pokud dojde k chybě obslužná rutina chyb je aktivní (mezi výskyt chyby a Resume, Exit Sub, Exit Function, nebo Exit Property prohlášení), obslužná rutina chyb aktuálního postupu nelze chybu zpracovat.Ovládací prvek se vrátí k volání procedury.

Volání procedury má popisovač povolené chyby, je aktivován pro zpracování chyby.Pokud volání procedury obslužná rutina chyb je také aktivní, řízení prochází zpět předchozí volání procedury dokud není nalezena obslužnou rutinu povoleno, ale neaktivní, chyba.Popisovač chyb je nalezen, chyba je závažná v okamžiku, kdy ji skutečně došlo.

Obslužná rutina chyb předá řízení zpět do volání procedury při každém řízení se stane aktuální procedury.Po zpracování chyby prostřednictvím obslužné rutiny chybu v postupu spuštění obnoví aktuální postupu v bodě určený Resume prohlášení.

[!POZNÁMKA]

Proceduru zpracování chyb není Sub postup nebo Function postup.Je oddíl označený řádek popisku nebo číslo řádku kódu.

Vlastnost Number

Rutiny ošetření chyb spoléhat na hodnotu Number vlastnost Err objekt určit příčinu chyby.Rutinní měla testovat nebo uložit příslušné hodnoty v Err objektu může dojít k jiné chybě nebo před postupem, který může způsobit chybu nazývá.Vlastnost hodnoty v Err objekt odrážel poslední chybu.Chybové zprávy související s Err.Number v Err.Description.

Příkaz throw

Chybu, která je vyvolána s Err.Raise metoda nastaví Exception vlastností nově vytvořené instanci Exception třídy.Na podporu zvyšování výjimky výjimky odvozené typy Throw příkaz je podporován v jazyce.To trvá jeden parametr, který je instance se vyvolá výjimku.Následující příklad ukazuje, jak tyto funkce lze s výjimkou existující podporu zpracování:

    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

Všimněte si, že On Error GoTo příkaz soutisk všechny chyby, bez ohledu na to, třída výjimek.

On Error Resume Next

On Error Resume Nextzpůsobí spuštění pokračovat příkazem bezprostředně následující příkaz, který způsobil chybu běhu nebo bezprostředně po posledním příkazem volání z obsahující postup On Error Resume Next prohlášení.Tento příkaz umožňuje spuštění pokračovat přes Chyba spuštění.Můžete umístit rutinní zpracování chyb, kde by se vyskytnout chyby, nikoli řízení přenosu do jiného umístění v rámci postupu.On Error Resume Next Prohlášení neaktivního při jiném postupu tak, že má být spuštěn On Error Resume Next v každém prohlášení nazývá rutina Pokud chcete vložené při zpracování v rámci dané rutina.

[!POZNÁMKA]

On Error Resume Next Konstrukce může být vhodnější On Error GoTo při zpracování chyb během přístupu k jiným objektům.Kontrola Err po každé interakci s objektem odebere nejednoznačnosti, o kterém získal objekt kód.Můžete být jisti, který objekt umístěn kód chyby v Err.Number, stejně jako objekt, který původně generována chyba (objekt určený v Err.Source).

On Error GoTo 0

On Error GoTo 0zakáže aktuální postup pro zpracování chyb.Neurčuje řádek 0 jako počáteční kód pro zpracování chyb, i v případě, že postup obsahuje řádek číslem 0.Aniž by On Error GoTo 0 prohlášení obslužná rutina chyb automaticky zakázána, když je ukončen postup.

On Error GoTo -1

On Error GoTo -1Výjimka v aktuální postup zakáže.Řádek -1 neurčuje jako začátek kód pro zpracování chyb, i v případě, že postup obsahuje řádek číslem -1.Aniž by On Error GoTo -1 prohlášení výjimku automaticky zakázána, když je ukončen postup.

Chcete-li zabránit kód pro zpracování chyb při nedošlo k žádné chybě, umístěte Exit Sub, Exit Function, nebo Exit Property prohlášení bezprostředně před rutinní zpracování chyb v následující části:

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

Zde následuje kód pro zpracování chyb Exit Sub prohlášení a předchází End Sub příkaz oddělit od řízení toku.Kód pro zpracování chyb můžete umístit kdekoli v proceduře.

Untrapped chyby

Untrapped chyby v objektech jsou vráceny řídící aplikace spuštěná objekt jako spustitelný soubor.Ve vývojovém prostředí untrapped chyby jsou vráceny řídící aplikace pouze v případě, že je správné nastavení.Popis, které by měly být možnosti nastavení během ladění, jak je nastavit a zda hostitele můžete vytvořit třídy naleznete v dokumentaci hostitelské aplikace.

Pokud vytvoříte objekt, který přistupuje k jiným objektům, pokuste se zpracovávat neošetřených chyb, které jim předat zpět.Pokud nelze mapovat kódy chyb v Err.Number jedné chyby a pak průchod zpět volajícímu objekt.Vaše chyba by měla určit přidáním kódu chyby VbObjectError konstantní.Například pokud chybový kód 1052, přiřaďte jej takto:

Err.Number = vbObjectError + 1052
Poznámka k upozorněníUpozornění

Chyby systému v průběhu volání knihovny (DLL) systému Windows není vyvolají výjimky a nelze soutisk s přesahy Chyba jazyka Visual Basic.Při volání funkce knihovny DLL, zkontrolujte každou hodnotu pro úspěch nebo neúspěch (podle specifikace rozhraní API) a v případě výskytu chyby, hodnota Err objektu LastDLLError vlastnost.

Příklad

V tomto prvním příkladu On Error GoTo příkaz zadat umístění proceduru zpracování chyb v rámci procedury.Pokus o dělení nulou v příkladu generuje chybu, číslo 6.Chyba zpracování rutiny zpracování chyb a řízení se vrátí klepněte na příkaz, který způsobil chybu.On Error GoTo 0 Příkaz vypne zachytávání chyb.Pak bude On Error Resume Next použití příkazu odložit chyba přesahy, takže kontext chyby generované dalším příkazu lze pro některé známé.Všimněte si, že Err.Clear slouží k vymazání Err vlastnosti objektu po zpracování došlo k chybě.

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

Požadavky

Obor názvů: Microsoft.VisualBasic

Sestavení: knihovna Runtime jazyka Visual Basic (v knihovny Microsoft.VisualBasic.dll)

Viz také

Referenční dokumentace

Příkazu end

Err

Number

Description

Ukončení příkazu (Visual Basic)

LastDllError

Příkaz Resume

Zkuste...Úlovek...Nakonec prohlášení (Visual Basic)

Koncepty

Chybové zprávy (Visual Basic)