Gestionarea excepțiilor în VB.Net: Exemple de manipulare Try & Catch
Ce este o excepție în VB.Net?
An Excepție în VB.Net se referă la o problemă care apare în timpul execuției programului. Este cauzată de o circumstanță neașteptată. Un bun exemplu este atunci când efectuați o operație de împărțire și apoi împărțiți la zero (0). Se va ridica o excepție.
Ce este gestionarea excepțiilor în VB.Net?
Cu excepții în VB.Net, puteți transfera controlul unui program de la o parte la alta. În VB.Net, excepțiile sunt gestionate folosind următoarele 4 cuvinte cheie:
Cuvânt cheie | Detaliu |
---|---|
Încerca | Lucrarea blocului Try este de a identifica blocul de cod pentru care va fi activată o anumită excepție. Ar trebui să fie urmată de un bloc(e) de prindere. |
Captură | Captarea excepției se face în acest bloc. Este un handler de excepție în care este gestionată excepția. |
Finally | Utilizați blocul Finally pentru a rula un set de instrucțiuni indiferent dacă a apărut sau nu o excepție. |
Arunca | O excepție este aruncată după apariția unei probleme. Aceasta este lucrarea cuvântului cheie Aruncă. |
Sintaxa lui Try Catch în VB.Net
Instrucțiunile Try Catch din VB.Net sunt definite folosind sintaxa de mai jos:
Try [ try_Statement(s) ] [ Exit Try ] [ Catch [ exception_name [ As type ] ] [ When expression ] [ catch_Statement(s) ] [ Exit Try ] ] [ Catch ... ] [ Finally [ finally_Statement(s) ] ] End Try
Blocul Try/Catch ar trebui să înconjoare codul care poate ridica o excepție. Acest cod este cunoscut ca un cod protejat. Puteți utiliza mai multe instrucțiuni catch atunci când trebuie să capturați diferite tipuri de excepții.
Exemplu de gestionare a excepțiilor în VB.Net cu Try Catch și Finally
Cu instrucțiunile Try/Catch, puteți separa codul de program obișnuit de sistemul de gestionare a erorilor. Să demonstrăm cum să gestionăm o excepție folosind cuvintele cheie Try, Catch și Finally.
Pas 1) Creați o nouă aplicație de consolă.
Pas 2) Utilizați acest cod:
Module Module1 Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer) Dim answer As Integer Try answer = n1 \ n2 Catch ex As DivideByZeroException Console.WriteLine("Exception: {0}", ex) Finally Console.WriteLine("Answer is: {0}", answer) End Try End Sub Sub Main() divisionFunction(4, 0) Console.ReadKey() End Sub End Module
Pas 3) Faceți clic pe butonul Start din bara de instrumente pentru a executa codul. Ar trebui să obțineți următorul rezultat:
Iată o captură de ecran a codului:
Explicația codului:
- Crearea unui modul numit Module1.
- Crearea unei sub-proceduri numită divisionFunction cu două argumente întregi n1 și n2. ByVal este un cuvânt cheie VB.Net care afirmă că valorile argumentelor vor fi transmise după valoare.
- Crearea unei variabile întregi numită răspuns.
- Începutul blocului Try/Catch. Trebuie să înconjurăm codul despre care bănuim că poate ridica o excepție cu acest bloc.
- Efectuarea unei operații de împărțire între valorile variabilelor n1 și n2. Rezultatul operației de împărțire este atribuit variabilei răspuns. Acest cod poate ridica o excepție, de exemplu, atunci când împărțim un număr la zero, prin urmare l-am înconjurat cu blocurile Try/Catch.
- Prinderea excepției numită DivideByZeroException și atribuirea mesajului de excepție generat ex.
- Imprimarea unui text pe consolă pentru a notifica utilizatorul despre tipul/numele excepției care a fost ridicată.
- Blocul Finally. Aceasta se va executa indiferent dacă o excepție este capturată sau nu.
- Tipărirea unui text pe consolă care arată rezultatul operațiunii de divizare.
- Sfârșitul blocului Try, adică sfârșitul codului de tratare a erorilor.
- Sfârșitul subprocedurii de diviziune Funcție.
- Începutul sub-procedurii principale.
- Apelarea/invocarea subprocedura de diviziuneFunction. Valorile celor două argumente întregi sunt transmise aici. Valoarea lui n1=4 și n2=0. Aceasta înseamnă că operația de împărțire va fi 4\0, adică n1\n2.
- Întreruperea ferestrei consolei în așteptarea ca utilizatorul să ia măsuri pentru a o închide.
- Sfârșitul subprocedurii principale.
- Sfârșitul modulului.
Excepții definite de utilizator în VB.Net
VB.Net vă permite să vă definiți propriile excepții. Puteți obține clase de excepție definite de utilizator din clasa ApplicationException. Să demonstrăm acest lucru printr-un exemplu:
Exemplu de excepție definită de utilizator în VB.Net
Iată un exemplu de excepție definită de utilizator în VB.Net:
Pas 1) Creați o nouă aplicație de consolă.
Pas 2) Utilizați următorul cod:
Module Module1 Public Class HeightIsZeroException : Inherits ApplicationException Public Sub New(ByVal text As String) MyBase.New(text) End Sub End Class Public Class Height Dim height As Integer = 0 Sub showHeight() If (height = 0) Then Throw (New HeightIsZeroException("Zero Height found")) Else Console.WriteLine("Height is: {0}", height) End If End Sub End Class Sub Main() Dim hght As Height = New Height() Try hght.showHeight() Catch ex As HeightIsZeroException Console.WriteLine("HeightIsZeroException: {0}", ex.Message) End Try Console.ReadKey() End Sub End Module
Pas 3) Faceți clic pe butonul Start din bara de sus pentru a executa codul. Ar trebui să obțineți următorul rezultat:
Iată o captură de ecran a codului:
Explicația codului:
- Crearea unui modul numit Module1.
- Crearea unei clase de excepție numită HeightIsZeroException. Clasa moștenește toată clasa ApplicationException.
- Crearea unei sub-proceduri numită New. Va fi nevoie de un singur argument șir numit text.
- Apelarea constructorului clasei de bază și transmiterea acestuia argumentul de mai sus.
- Sfârșitul noii sub-proceduri.
- Sfârșitul clasei HeightIsZeroException.
- Crearea unei clase numită Height. Modificatorul său de acces public este Public, ceea ce înseamnă că va fi accesibil public.
- Crearea unei variabile întregi numită Height și inițializarea valorii acesteia la 0.
- Crearea unei sub-proceduri numită showHeight().
- Verificarea când valoarea variabilei Înălțime este 0. Am folosit condiția Dacă... Atunci.
- Pentru a arunca HeightIsZeroException dacă condiția de mai sus este adevărată. Mesajul Zero Height Found va fi afișat atunci când această excepție este aruncată.
- Partea Else va fi executată atunci când condiția If nu este adevărată.
- Mesaj de tipărit pe consolă care arată înălțimea atunci când nu este 0.
- Sfârșitul condiției If.
- Sfârșitul subprocedurii showHeight().
- Sfârșitul clasei Înălțimea.
- Începutul sub-procedurii principale.
- Crearea unui obiect numit Height ca o instanță a clasei Height.
- Începutul blocului de gestionare a excepțiilor.
- Invocarea subprocedura showHeight() definită în clasa Height. Am folosit un obiect din această clasă pentru a accesa această metodă. Această linie poate duce la o excepție. Prin urmare, l-am înconjurat cu un cod de gestionare a excepțiilor.
- Prinderea excepției HeightIsZeroException ca obiect ex în cazul în care apare.
- Mesajul de tipărit pe consolă când este capturată HeightIsZeroException.
- Sfârșitul blocului de gestionare a excepțiilor.
- Întrerupeți fereastra consolei în așteptarea ca un utilizator să ia măsuri pentru a o închide.
- Sfârșitul subprocedurii principale.
- Sfârșitul modulului.
Aruncă o excepție în VB.Net
În gestionarea excepțiilor, puteți alege să aruncați un obiect. Cu toate acestea, obiectul trebuie să fie derivat din System. Clasa de excepție, direct sau indirect. De exemplu:
Exemplu de excepție de aruncare în VB.Net
Mai jos este un exemplu de excepție de aruncare în VB.Net:
Pas 1) Creați o nouă aplicație de consolă.
Pas 2) Utilizați următorul cod:
Module Module1 Sub Main() Try Throw New ApplicationException("Throwing a custom exception") Catch ex As Exception Console.WriteLine(ex.Message) Finally Console.WriteLine("The Finally Block") End Try Console.ReadKey() End Sub End Module
Pas 3) Faceți clic pe butonul Start din bara de sus pentru a executa codul. Ar trebui să obțineți următoarele:
Iată o captură de ecran a codului:
Explicația codului:
- Crearea unui modul numit Module1.
- Începutul sub-procedurii principale.
- Începutul codului de gestionare a erorilor.
- Aruncarea unui obiect excepție. Acest cod poate genera o excepție, prin urmare l-am înconjurat cu un bloc Try/Catch.
- Prinderea unei excepții ca obiect ex dacă linia aruncă o excepție.
- Imprimarea mesajului de excepție pe consolă în cazul în care apare.
- Blocul Finally se rulează dacă o excepție este capturată sau nu.
- Mesajul de tipărit pe consolă când blocul Finally este executat.
- Sfârșitul codului de gestionare a excepțiilor.
- Întrerupeți consola pentru un timp, așteptând ca un utilizator să ia măsuri pentru a o închide.
- Sfârșitul subprocedurii principale.
- Sfârșitul modulului.
Rezumat
- O excepție se referă la o problemă care apare în timpul execuției programului, cauzată de o circumstanță neașteptată.
- Dacă bănuiți că un cod va genera o excepție, înconjurați-l cu un bloc Try/Catch.
- Blocul Finally vine după blocul Try/Catch și se execută indiferent dacă o excepție este capturată sau nu.
- VB.Net ne permite să creăm excepții personalizate.