C# Uitsonderings - Probeer..Vang
C# Uitsonderings
Wanneer C#-kode uitgevoer word, kan verskillende foute voorkom: koderingsfoute wat deur die programmeerder gemaak is, foute as gevolg van verkeerde invoer, of ander onvoorsienbare dinge.
Wanneer 'n fout voorkom, sal C# normaalweg stop en 'n foutboodskap genereer. Die tegniese term hiervoor is: C# sal 'n uitsondering gooi (gooi 'n fout).
C# probeer vang
Die try
stelling laat jou toe om 'n blok kode te definieer wat vir foute getoets moet word terwyl dit uitgevoer word.
Die catch
stelling laat jou toe om 'n blok kode te definieer wat uitgevoer moet word, as 'n fout in die probeerblok voorkom.
Die try
en catch
sleutelwoorde kom in pare:
Sintaksis
try
{
// Block of code to try
}
catch (Exception e)
{
// Block of code to handle errors
}
Beskou die volgende voorbeeld, waar ons 'n skikking van drie heelgetalle skep:
Dit sal 'n fout genereer, want myNumbers[10] bestaan nie.
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]); // error!
Die foutboodskap sal iets soos volg wees:
System.IndexOutOfRangeException: 'Index was outside the bounds of the
array.'
As 'n fout voorkom, kan ons dit gebruik try...catch
om die fout op te spoor en 'n kode uit te voer om dit te hanteer.
In die volgende voorbeeld gebruik ons die veranderlike binne die vangblok ( e
) saam met die ingeboude Message
eienskap, wat 'n boodskap uitvoer wat die uitsondering beskryf:
Voorbeeld
try
{
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Die uitset sal wees:
Index was outside the bounds of the array.
Jy kan ook jou eie foutboodskap uitvoer:
Voorbeeld
try
{
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
Console.WriteLine("Something went wrong.");
}
Die uitset sal wees:
Something went wrong.
Uiteindelik
Die finally
stelling laat jou kode uitvoer, na try...catch
, ongeag die resultaat:
Voorbeeld
try
{
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
Console.WriteLine("Something went wrong.");
}
finally
{
Console.WriteLine("The 'try catch' is finished.");
}
Die uitset sal wees:
Something went wrong.
The 'try catch' is finished.
Die gooi sleutelwoord
Die throw
stelling laat jou toe om 'n persoonlike fout te skep.
Die throw
stelling word saam met 'n uitsonderingsklas gebruik . Daar is baie uitsonderingsklasse beskikbaar in C#: ArithmeticException
,
FileNotFoundException
,
IndexOutOfRangeException
, TimeOutException
, ens:
Voorbeeld
static void checkAge(int age)
{
if (age < 18)
{
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else
{
Console.WriteLine("Access granted - You are old enough!");
}
}
static void Main(string[] args)
{
checkAge(15);
}
Die foutboodskap wat in die program vertoon word, sal wees:
System.ArithmeticException: 'Access denied - You must be at least 18 years old.'
As age
jy 20 was, sou jy nie 'n uitsondering kry nie:
Voorbeeld
checkAge(20);
Die uitset sal wees:
Access granted - You are old enough!