Prøv ... Catch ... Endelig kaster, brukerdefinert unntak i VB.Net

Innholdsfortegnelse:

Anonim

Hva er et unntak?

Et unntak refererer til et problem som oppstår under programgjennomføring. Det er forårsaket av en uventet omstendighet. Et godt eksempel er når du utfører en delingsoperasjon, og deretter deler du med null (0). Et unntak vil bli reist.

I denne Visual Basic-opplæringen lærer du:

  • Hva er et unntak?
  • Hva er unntakshåndtering?
  • Syntaks for Try / Catch
  • Eksempel for å håndtere unntak
  • Brukerdefinerte unntak
  • Kaste gjenstander

Hva er unntakshåndtering?

Med unntak kan du overføre kontrollen av et program fra en del til en annen. I VB.NET håndteres unntak ved hjelp av følgende 4 nøkkelord:

Nøkkelord Detalj
Prøve Arbeidet med prøveblokken er å identifisere kodeblokken som et spesifikt unntak vil bli aktivert for. Den skal følges av en fangstblokk (er).
Å fange Fangst av unntaket gjøres i denne blokken. Det er en unntaksbehandler der unntaket håndteres.
Endelig Bruk Endelig-blokken for å kjøre et sett med utsagn om et unntak har skjedd eller ikke.
Kaste Et unntak kastes etter at det har oppstått et problem. Dette er arbeidet med nøkkelordet.

Syntaks for Try / Catch

Try / Catch-setningene tar syntaksen nedenfor:

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

Try / Catch-blokken skal omgi koden som kan gi et unntak. Denne koden er kjent som en beskyttet kode. Du kan bruke flere fangstuttalelser når du trenger å fange forskjellige typer unntak.

Eksempel for å håndtere unntak

Med Try / Catch-setningene kan du skille din vanlige programkode fra feilhåndteringssystemet. La oss demonstrere hvordan du håndterer et unntak ved å bruke søkeordene Prøv, Fang og Til slutt.

Trinn 1) Opprett et nytt konsollprogram.

Trinn 2) Bruk denne koden:

Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd Module

Trinn 3) Klikk på Start-knappen fra verktøylinjen for å utføre koden. Du bør få følgende utdata:

Her er et skjermbilde av koden:

Forklaring av kode:

  1. Opprette en modul med navnet Module1.
  2. Opprette en underprosedyre med navnet divisionFunction med to heltallargumenter n1 og n2. ByVal er et VB.NET-nøkkelord som sier at verdiene til argumentene vil bli gitt etter verdi.
  3. Opprette et heltallsvariabel med navnet svar.
  4. Start av prøve / fangst-blokken. Vi må omslutte koden som vi mistenker kan ha et unntak med denne blokken.
  5. Utføre en delingsoperasjon mellom verdiene til variablene n1 og n2. Resultatet av delingsoperasjonen tilordnes variabelsvaret. Denne koden kan gi et unntak, for eksempel når vi deler et tall med null, derfor har vi omringet det med Try / Catch-blokkene.
  6. Fange unntaket kalt DivideByZeroException og tilordne den genererte unntaksmeldingen til eksen.
  7. Skrive ut tekst på konsollen for å varsle brukeren om typen / navnet på unntaket som ble hevet.
  8. Den endelige blokken. Dette vil utføre om et unntak blir fanget opp eller ikke.
  9. Skriver ut tekst på konsollen som viser resultatet av delingsoperasjonen.
  10. Slutt på prøveblokken, det vil si slutten på feilhåndteringskoden.
  11. Slutten av delingen Funksjon underprosedyre.
  12. Start av hovedundersøkelsen.
  13. Ringe / påkalle delprosedyren divisionFunction. Verdiene til de to heltallargumentene sendes her. Verdien av n1 = 4 og n2 = 0. Dette betyr at delingsoperasjonen vil være 4 \ 0, det vil si n1 \ n2.
  14. Pauser konsollvinduet og venter på at brukeren skal iverksette tiltak for å lukke det.
  15. Avslutningen på hovedundersøkelsen.
  16. Slutten på modulen.

Brukerdefinerte unntak

VB.NET lar deg definere dine egne unntak. Du kan få brukerdefinerte unntaksklasser fra ApplicationException-klassen. La oss demonstrere dette med et eksempel:

Trinn 1) Opprett et nytt konsollprogram.

Trinn 2) Bruk følgende kode:

Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd Module

Trinn 3) Klikk Start-knappen fra den øverste linjen for å utføre koden. Du bør få følgende utdata:

Her er et skjermbilde av koden:

Forklaring av kode:

  1. Opprette en modul med navnet Module1.
  2. Opprette en unntaksklasse som heter HeightIsZeroException. Klassen arver all ApplicationException-klassen.
  3. Opprette en underprosedyre som heter Ny. Det vil ta ett strengargument med navnet tekst.
  4. Å ringe basisklassekonstruktøren og overføre argumentet ovenfor.
  5. Avslutningen på den nye underprosedyren.
  6. Slutt på klassen HeightIsZeroException.
  7. Opprette en klasse som heter Høyde. Modifikatoren for offentlig tilgang er offentlig, noe som betyr at den vil være offentlig tilgjengelig.
  8. Opprette en heltallvariabel kalt Høyde og initialisere verdien til 0.
  9. Opprette en underprosedyre som heter showHeight ().
  10. Kontrollerer når verdien på variabelen Høyde er 0. Vi har brukt tilstanden Hvis ... Så.
  11. Å kaste HeightIsZeroException hvis tilstanden ovenfor er oppfylt. Meldingen Null høyde funnet vil vises når dette unntaket kastes.
  12. Den andre delen som skal utføres når If-tilstanden ikke er oppfylt.
  13. Melding som skal skrives ut på konsollen som viser høyden når den ikke er 0.
  14. Slutt på Hvis-tilstanden.
  15. Slutt på showHeight () underprosedyre.
  16. Slutt på klassen Høyde.
  17. Start av hovedundersøkelsen.
  18. Opprette et objekt som heter Høyde som en forekomst av klassen Høyde.
  19. Start av unntakshåndteringsblokken.
  20. Påkaller showprojektet showHeight () definert i høydeklassen. Vi har brukt et objekt av denne klassen for å få tilgang til denne metoden. Denne linjen kan resultere i et unntak. Derfor har vi omringet den med en unntakshåndteringskode.
  21. Å fange HeightIsZeroException-unntaket som objekt eks i tilfelle det oppstår.
  22. Meldingen som skal skrives ut på konsollen når HeightIsZeroException er fanget.
  23. Slutten på unntaksbehandlingsblokken
  24. Sett konsollvinduet på pause og venter på at en bruker skal gjøre noe for å lukke det.
  25. Avslutningen på hovedundersøkelsen.
  26. Slutten på modulen.

Kaste gjenstander

I unntakshåndtering kan du velge å kaste et objekt. Objektet må imidlertid være avledet fra System. Unntaksklasse, direkte eller indirekte. For eksempel:

Trinn 1) Opprett et nytt konsollprogram.

Trinn 2) Bruk følgende kode:

Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module

Trinn 3) Klikk Start-knappen fra den øverste linjen for å utføre koden. Du bør få følgende:

Her er et skjermbilde av koden:

Forklaring av kode:

  1. Opprette en modul med navnet Module1.
  2. Start av hovedundersøkelsen.
  3. Start av feilhåndteringskoden.
  4. Kaster et unntaksobjekt. Denne koden kan generere et unntak, derfor har vi omringet den med en prøve / fangst-blokk.
  5. Fange et unntak som objekt eks hvis linjen gir et unntak.
  6. Skriver ut unntaksmeldingen på konsollen i tilfelle den oppstår.
  7. Den siste blokken for å kjøre om et unntak er fanget eller ikke.
  8. Meldingen som skal skrives ut på konsollen når End-blokken kjøres.
  9. Slutt på koden for unntakshåndtering.
  10. Sett konsollen på pause en stund og vent på at brukeren skal iverksette tiltak for å lukke den.
  11. Avslutningen på hovedundersøkelsen.
  12. Slutten på modulen.

Sammendrag

  • Et unntak refererer til et problem som oppstår under programgjennomføring forårsaket av en uventet omstendighet.
  • Hvis du mistenker at en eller annen kode vil generere et unntak, kan du omgi den med en prøve / fangst-blokk.
  • Endelig-blokken kommer etter Try / Catch-blokken og utfører om et unntak er fanget eller ikke.
  • VB.NET lar oss lage tilpassede unntak.