Sissejuhatus erandkäsitlusele C # -s
Me ei saa eeldada, et kasutaja sisestab kogu aeg õiged andmed. Kui aga valet või ootamatut sisestust ei käsitata õigesti, võib kogu kood krahhi tekkida või minna lõputu ahelaga. See on probleem, mis algab programmi käivitamisel ootamatute tingimuste või sisendite tõttu. Näiteks on tulemus lõpmatu, kui number jagatakse nulliga. Erandkäsitsemine on viis, kuidas kästa programmil liikuda järgmisse koodiplokki või anda teatud olukordades määratletud tulemus. Erandkäsitluse võiks teha alla nelja märksõna.
- Proovige: prooviplokk määratleb käsitletava erandi tüübi. See on koht, kus erand satuks. See paarub alati ühe püügiplokiga.
- Saak: kui prooviplokk on tüübi määratlenud ja täitmise ajal saanud ühe erandi, kinnitab püügiplokk kasutatava erandkäitleja tüübi. See blokk määrab ka erandi käsitlemise koha. Nagu märksõna näitab, on see justkui erandi püüdmine.
- Lõpuks: selles plokis on mõned avaldused. Vaatamata erandile, täidetakse alati viimases plokis määratletud avaldused.
- Viska: kui erand on tabatud, kasutatakse püütud erandi kuvamiseks viskamist.
Erandite töötleja määratlemisega saate tarkvara või koodi salvestada palju vaeva. Hea tava on määratleda erandite töötleja kõikjal, kus on võimalik erand.
Süntaks
Erandi lisamisel püütakse deklareeritud meetod erandi abil proovida ja püüda märksõna abil. Peame selle kombinatsiooni paigutama koodi osale, eeldatakse erandit. Neid koode nimetatakse kaitstud koodideks. Samuti võite ühe proovimismeetodi jaoks määratleda rohkem kui ühe märksõna. Sisu lõpus täidetakse koodi viimane osa sellele ja see teostatakse sõltumata sellest, kas tehakse erand.
Kood
try
(
//Define the statement that could cause an exception.
)
Catch(ExceptionName secondException)
(
//error handling code
)
Finally
(
//define the statement that will be executed
)
Kuidas toimib erandkäsitlus C # -s?
Erandi käsitlemiseks on palju eelnevalt määratletud klasse. Prooviplokk hõlmab koodi seda osa, mis võib erandi visata ja saak kinnitab, mida teha erandi tabamisel. Ploki viimane osa määratleb, mida tuleb teha, kas erand tuvastatakse või mitte, ning viskeosas kuvatakse teade, kui see on seatud.
Erandklassid C-klassis
C #-s on saadaval palju klasse, mille kaudu saab erandeid esindada. Kõik klassid on tuletatud põhiklassist nimega System. Erand. On vähe klasse, mis on samuti tuletatud süsteemidest System.ApplicationException ja System.SystemException.
C-klassi erandklasside näited
Erandid tulenevad süsteemist. Erandklass. Siin on C # levinumate erandklasside loend.
Erand | Kirjeldus |
System.DivideByZeroException | tegeleb veaga, kui proovitakse arvu nulliga jagada. |
System.NullReferenceException | tegeleb veaga, kui viidatakse objektile, mida pole olemas. |
System.InvalidCastException | lahendab viga kehtetu ülekandmise proovimisel. |
System.IO.IOErand | Kõik sisend-väljundviga on lahendatud. |
System.FieldAccessException | Kui proovite pääseda volitamata klassi |
1. C # proovida / püüda
Erandite käsitlemine toimub proovivõtupüügiplokiga C #. C # prooviplokki kasutatakse koodi paigutamiseks, mis võib erandi anda. Erandiga tegeleb püügiblokk.
C # näide ilma proovimata
Kood:
using System;
public class exceptionhandling
(
public static void Main(string() args)
(
int a = 10;
int b = 0;
int x = a/b; //we are trying to divide the number with zero
Console.WriteLine("other part of the code");
)
)
Väljund:
C # proovida / püüda näide
Kood
using System;
public class ExExample
(
public static void Main(string() args)
(
try
(
int a = 10;
int b = 0;
int x = a / b;
)
catch (Exception e) ( Console.WriteLine(e); )
Console.WriteLine("Rest of the code");
)
)
Väljund:
Erandklasside kasutamine C # -s lõpuks
See näitab teile sõnumit, olenemata erandist.
Kood
using System;
public class Exceptionhandling
(
public static void Main(string() args)
(
try
(
int x = 5;
int y= 0;
int z = x / y;
)
catch (Exception obj) ( Console.WriteLine(obj); )
finally ( Console.WriteLine("Time to execute finally block"); )
Console.WriteLine("Other part of the code");
)
)
Väljund:
1. C # lõpuks näide, kui erandit ei käsitleta
Kood
using System;
public class ExceptionHandling
(
public static void Main(string() args)
(
try
(
int p = 6;
int q = 0;
int r= p/q;
)
catch (NullReferenceException nullObject) ( Console.WriteLine(nullObject); )
finally ( Console.WriteLine("Exception not handled. Now Finally section will be executed"); )
Console.WriteLine("Other part of the code");
)
)
Väljund:
2. C # kasutaja määratletud erand
Mitte ainult määratletud süsteem, vaid ka meie saame teha oma erandi. Selle saavutamiseks peame siiski koodi pärima.
Kood
using System;
public class userdefinedInvalidAge : Exception
(
public userdefinedInvalidAge (String errorMessage)
: base(errorMessage)
(
)
)
public class TestUserDefinedException
(
static void validateAge(int age)
(
if (age < 18)
(
throw new userdefinedInvalidAge("Sorry, Age must be greater than 18");
)
)
public static void Main(string() args)
(
try
(
validateAge(12);
)
catch (userdefinedInvalidAge e) ( Console.WriteLine(e); )
Console.WriteLine("Rest of the code");
)
)
Väljund:
Järeldus
Mis tahes kohas võib teie arvates viga tekkida, tuleks kasutada erandkäitlejat. On oluline, et kasutaksite püügiavaldust ja alustaks üldistest kuni konkreetse erandini. Kogu teie tarkvara või kood on ohus ilma nõuetekohase erandita.
Soovitatavad artiklid
See on juhend erandite käsitlemiseks jaotises C #. Siin arutleme, kuidas erandite käsitlemine C #-s toimib, näiteid ja c # kasutamist. Lisateavet leiate ka meie muudest seotud artiklitest -
- Ülekoormus C # -s
- C # keelte funktsioonid
- Kasutab C #
- C # kui avaldus
- Erandite käsitlemise juhend VB.NET-is
- C-numbri ülekoormamine ja alistamine
- VB.Net sündmused