Próbálja ... Catch ... Végül Throws, Felhasználó által definiált kivétel a VB.Net-ben

Tartalomjegyzék:

Anonim

Mi az a kivétel?

Kivétel a program végrehajtása során felmerülő problémára utal. Váratlan körülmény idézi elő. Jó példa erre, ha osztási műveletet hajt végre, majd elosztja nullával (0). Kivételt vetnek fel.

Ebben a Visual Basic oktatóanyagban megtudhatja:

  • Mi az a kivétel?
  • Mi az a kivételkezelés?
  • A Try / Catch szintaxisa
  • Példa a kivételek kezelésére
  • Felhasználó által definiált kivételek
  • Tárgyak dobása

Mi az a kivételkezelés?

Kivételtől eltekintve áthelyezheti a program vezérlését egyik részről a másikra. A VB.NET-ben a kivételeket a következő 4 kulcsszóval kezelik:

Kulcsszó Részlet
Próbáld ki A Try blokk feladata annak a kódblokknak az azonosítása, amelyre egy adott kivétel aktiválódik. Ezt egy elkapási blokk (ok) követi.
Fogás A Kivétel befogása ebben a blokkban történik. Ez egy kivételkezelő, amelyben a Kivételt kezelik.
Végül Az Utolsó blokk segítségével futtathat egy állításkészletet, függetlenül attól, hogy történt-e kivétel.
Dobás A probléma előfordulása után kivételt hoznak. Ez a Dobás kulcsszó munkája.

A Try / Catch szintaxisa

A Try / Catch utasítások az alábbi szintaxist adják:

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

A Try / Catch blokknak körül kell vennie a kódot, amely kivételt jelenthet. Ez a kód védett kód néven ismert. Akkor használhat több fogási utasítást, ha különféle típusú kivételeket kell elkapnia.

Példa a kivételek kezelésére

A Try / Catch utasításokkal elválaszthatja a szokásos programkódot a hibakezelő rendszertől. Bemutassuk, hogyan kell kezelni a kivételt a Try, a Catch és a Last kulcsszavak segítségével.

1. lépés: Hozzon létre egy új konzolalkalmazást.

2. lépés : Használja ezt a kódot:

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

3. lépés) Kattintson a Start gombra az eszköztáron a kód végrehajtásához. A következő kimenetet kell kapnia:

Itt van egy képernyőkép a kódról:

A kód magyarázata:

  1. Modul1 nevű modul létrehozása.
  2. A DivisionFunction nevű aleljárás létrehozása két egész n1 és n2 argumentummal. A ByVal egy VB.NET kulcsszó, amely azt állítja, hogy az argumentumok értékei érték szerint kerülnek átadásra.
  3. Válasz nevű egész változó létrehozása.
  4. A Try / Catch blokk kezdete. Körbe kell vennünk a kódot, amelyről feltételezhetjük, hogy kivételt jelenthet ezzel a blokkkal.
  5. Osztási művelet végrehajtása az n1 és n2 változók értékei között. Az osztási művelet eredményét a változó válaszhoz rendeljük. Ez a kód kivételt vethet fel, például ha egy számot nullával osztunk el, ezért körülvettük a Try / Catch blokkokkal.
  6. A DivideByZeroException nevű kivétel elkapása és a létrehozott kivételüzenet hozzárendelése az ex-hez.
  7. Nyomtat néhány szöveget a konzolra, hogy értesítse a felhasználót a felvetett kivétel típusáról / nevéről.
  8. Az utolsó blokk. Ez végrehajtja, hogy van-e kivétel vagy sem.
  9. Nyomtat néhány szöveget a konzolra, amely megmutatja az osztási művelet eredményét.
  10. A Try blokk vége, vagyis a hibakezelő kód vége.
  11. A DivisionFunction alfolyamat vége.
  12. A fő eljárás megkezdése.
  13. A divízióFunction aleljárás hívása / meghívása. A két egész argumentum értékeit itt adjuk át. N1 = 4 és n2 = 0 értéke. Ez azt jelenti, hogy az osztási művelet 4 \ 0 lesz, azaz n1 \ n2.
  14. A konzolablak szüneteltetése arra vár, hogy a felhasználó tegyen lépéseket annak bezárására.
  15. A fő aleljárás vége.
  16. A modul vége.

Felhasználó által definiált kivételek

A VB.NET lehetővé teszi, hogy meghatározza saját kivételeit. Felhasználó által definiált kivételosztályokat az ApplicationException osztályból szerezhet be. Bemutassuk ezt egy példával:

1. lépés: Hozzon létre egy új konzolalkalmazást.

2. lépés : Használja a következő kódot:

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

3. lépés) Kattintson a Start gombra a felső sávon a kód végrehajtásához. A következő kimenetet kell kapnia:

Itt van egy képernyőkép a kódról:

A kód magyarázata:

  1. Modul1 nevű modul létrehozása.
  2. HeightIsZeroException nevű kivételosztály létrehozása. Az osztály az összes ApplicationException osztályt örökli.
  3. Új nevű aleljárás létrehozása. Ehhez egy karakterlánc argumentum kell, amelynek neve szöveg.
  4. Az alaposztály konstruktorának meghívása és a fenti argumentum átadása.
  5. Az új aleljárás vége.
  6. A HeightIsZeroException osztály vége.
  7. Magasság nevű osztály létrehozása. Nyilvános hozzáférés-módosítója Nyilvános, vagyis nyilvánosan elérhető lesz.
  8. Magasság nevű egész változó létrehozása és 0-ra való inicializálása.
  9. A showHeight () nevű aleljárás létrehozása.
  10. Annak ellenőrzése, hogy a Magasság változó értéke 0. Ha az If… Akkor feltételt használtuk.
  11. A HeightIsZeroException dobása, ha a fenti feltétel igaz. A Zero Height Found üzenet jelenik meg, amikor ezt a kivételt eldobja.
  12. A Másik rész végrehajtandó, ha az If feltétel nem igaz.
  13. A konzolra nyomtatandó üzenet, amely a Magasságot mutatja, ha az nem 0.
  14. Az If feltétel vége.
  15. A showHeight () alfolyamat vége.
  16. Az osztály vége Magasság.
  17. A fő eljárás megkezdése.
  18. A Height nevű objektum létrehozása a Height osztály példányaként.
  19. A kivételkezelő blokk kezdete.
  20. A Height osztályban definiált showHeight () al eljárás meghívása. Ehhez az osztályhoz tartozó objektumokat használtunk a módszer eléréséhez. Ez a sor kivételt eredményezhet. Ezért kivételkezelő kóddal vettük körül.
  21. A HeightIsZeroException kivétel kivétele objektumként ex, ha előfordul.
  22. A konzolra nyomtatandó üzenet, amikor a HeightIsZeroException befogásra kerül.
  23. A kivételkezelő blokk vége.
  24. Szüneteltesse a konzolablak megvárását, amíg a felhasználó megteszi a műveletet annak bezárása érdekében.
  25. A fő aleljárás vége.
  26. A modul vége.

Tárgyak dobása

Kivételes kezelés esetén kiválaszthat egy tárgyat. Az objektumnak azonban a System-ből kell származnia. Kivételosztály, közvetlenül vagy közvetve. Például:

1. lépés: Hozzon létre egy új konzolalkalmazást.

2. lépés : Használja a következő kódot:

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

3. lépés) Kattintson a Start gombra a felső sávon a kód végrehajtásához. A következőket kell kapnia:

Itt van egy képernyőkép a kódról:

A kód magyarázata:

  1. Modul1 nevű modul létrehozása.
  2. A fő eljárás megkezdése.
  3. A hibakezelő kód kezdete.
  4. Kivételes tárgy dobása. Ez a kód kivételt generálhat, ezért egy Try / Catch blokkkal vettük körül.
  5. Kivétel befogása objektumként ex, ha a sor kivételt dob.
  6. A kivételüzenet kinyomtatása a konzolra, ha előfordul.
  7. Az Utolsó blokk futtatásához, függetlenül attól, hogy van-e kivétel.
  8. A konzolra nyomtatandó üzenet a Végső blokk végrehajtásakor.
  9. A kivételkezelő kód vége.
  10. Szüneteltesse egy ideig a konzolt, és várja meg, amíg a felhasználó megteszi a műveletet a bezárása érdekében.
  11. A fő aleljárás vége.
  12. A modul vége.

Összegzés

  • Kivétel a program végrehajtása során felmerülő problémára utal, amelyet váratlan körülmény okozott.
  • Ha gyanítja, hogy valamilyen kód kivételt generál, vegye körül egy Try / Catch blokkkal.
  • Az Utolsó blokk a Try / Catch blokk után következik, és végrehajtja, hogy van-e kivétel kivétel.
  • A VB.NET lehetővé teszi számunkra, hogy egyedi kivételeket hozzunk létre.