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 trystelling laat jou toe om 'n blok kode te definieer wat vir foute getoets moet word terwyl dit uitgevoer word.

Die catchstelling laat jou toe om 'n blok kode te definieer wat uitgevoer moet word, as 'n fout in die probeerblok voorkom.

Die tryen catchsleutelwoorde 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 Messageeienskap, 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 finallystelling 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 throwstelling laat jou toe om 'n persoonlike fout te skep.

Die throwstelling 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 agejy 20 was, sou jy nie 'n uitsondering kry nie:

Voorbeeld

checkAge(20);

Die uitset sal wees:

Access granted - You are old enough!