C# Academy · Lektion

Enkel diagnosticering: exceptions kontra guard checks

Anvend guard checks på forventede ugyldige input, kast exceptions ved ekstraordinære tilstande, og brug try/catch til at håndtere fejl på en robust måde.

Lektion 3 af 38 trin

Enkel diagnosticering: exceptions kontra guard checks er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 3 af 3. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 3 lektioner i alt.

Diagnostikoversigt

Mål: Brug forhåndstjek til forventede problemer og undtagelser til sjældne, alvorlige problemer.

Demo af forhåndstjek

Forhåndstjek returnerer en status i stedet for at kaste en undtagelse ved almindelige ugyldige inddata.

using System;

public class Program
{
  public static bool TryDivide(int a, int b, out int result)
  {
    if (b == 0)
    {
      result = 0;
      return false; // guard check fails
    }
    result = a / b;
    return true;
  }

  public static void Main(string[] args)
  {
    int r;
    bool ok = TryDivide(10, 0, out r);
    Console.WriteLine("ok=" + ok + " result=" + r);
  }
}

Demo af undtagelse

Undtagelser standser kørslen, medmindre de håndteres. Brug dem ved uventede eller alvorlige tilstande.

using System;

public class Program
{
  public static int PriceWithTax(int price, int ratePercent)
  {
    if (price < 0)
    {
      throw new ArgumentOutOfRangeException("price");
    }
    if (ratePercent < 0 || ratePercent > 100)
    {
      throw new ArgumentOutOfRangeException("ratePercent");
    }
    return price + (price * ratePercent / 100);
  }

  public static void Main(string[] args)
  {
    try
    {
      int total = PriceWithTax(100, 20);
      Console.WriteLine("Total=" + total);
    }
    catch (Exception ex)
    {
      Console.WriteLine("Error: " + ex.Message);
    }
  }
}

Kombination af tjek og undtagelser

Kombinér tilgange: forhåndstjek til rutinemæssig validering og undtagelser til ugyldige tilstande.

using System;

public class Program
{
  public static bool TryParsePrice(string text, out int value)
  {
    return int.TryParse(text, out value); // guard check
  }

  public static int GetDiscount(int code)
  {
    if (code < 0) throw new ArgumentException("Invalid code"); // exception
    return 10;
  }

  public static void Main(string[] args)
  {
    int v;
    if (TryParsePrice("123", out v))
    {
      Console.WriteLine("Parsed " + v);
    }

    try
    {
      int d = GetDiscount(-1);
      Console.WriteLine("Discount=" + d);
    }
    catch (Exception ex)
    {
      Console.WriteLine("Error: " + ex.Message);
    }
  }
}

Eksempel med try/catch

Brug try/catch til at håndtere undtagelser og holde programmet kørende.

using System;

public class Program
{
  public static void Main(string[] args)
  {
    try
    {
      int x = 10;
      int y = 0;
      int z = x / y; // will throw DivideByZeroException
      Console.WriteLine(z);
    }
    catch (DivideByZeroException ex)
    {
      Console.WriteLine("Cannot divide by zero: " + ex.Message);
    }
  }
}

Tip

Tip:

  • Forhåndstjek returnerer sikre standardværdier i almindelige tilfælde.
  • Undtagelser bør være sjældne og meningsfulde.
  • Indfang kun det, du kan håndtere.

Forhåndstjek eller undtagelse

Hurtigt tjek: Hvornår bør du foretrække forhåndstjek frem for at kaste undtagelser?

Opsummering

Opsummering: Brug forhåndstjek ved almindelige ugyldige inddata, kast undtagelser ved ekstraordinære tilstande, og håndter dem med try/catch, når genoprettelse er mulig.

Gratis at komme i gang

Lær C# med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
93
Lektioner
346

Ofte stillede spørgsmål

Er lektionen “Enkel diagnosticering: exceptions kontra guard checks” gratis?

Ja — hele teksten til “Enkel diagnosticering: exceptions kontra guard checks” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 3 lektioner i alt.

Hvad lærer jeg i “Enkel diagnosticering: exceptions kontra guard checks”?

Anvend guard checks på forventede ugyldige input, kast exceptions ved ekstraordinære tilstande, og brug try/catch til at håndtere fejl på en robust måde. Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C# Academy?

Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 3.

Hvor lang tid tager lektionen “Enkel diagnosticering: exceptions kontra guard checks”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C# Academy-lektion?

Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. if/else, switch (klassisk), løkker: for, while, do, foreach
  2. break/continue; goto (undgå); scope; exceptions kontra guard checks
  3. Enkel diagnosticering: exceptions kontra guard checks
← Tilbage til C# Academy