C# Academy · Lektion

Enkel diagnostik: undantag kontra guard-kontroller

Använd guard-kontroller för förväntade ogiltiga indata, kasta undantag för exceptionella tillstånd och använd try/catch för att hantera fel smidigt.

Lektion 3 av 38 steg

Enkel diagnostik: undantag kontra guard-kontroller är en gratis lektion i C# Academy på CoddyKit. Detta är lektion 3 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C# Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C# Academy innehåller totalt 3 lektioner.

Översikt över diagnostik

Mål: Använd guard-kontroller för förväntade problem och undantag för sällsynta, allvarliga problem.

Exempel på guard-kontroll

Guard-kontroller returnerar en status i stället för att kasta ett undantag vid vanliga ogiltiga indata.

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);
  }
}

Exempel på undantag

Undantag avbryter körningen om de inte hanteras. Använd dem för oväntade eller allvarliga tillstånd.

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);
    }
  }
}

Blanda kontroller och undantag

Kombinera metoderna: använd guard-kontroller för rutinmässig validering och undantag för ogiltiga tillstånd.

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);
    }
  }
}

Exempel med try/catch

Använd try/catch för att hantera undantag och låta programmet fortsätta köras.

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);
    }
  }
}

Tips

Tips:

  • Guard-kontroller returnerar säkra standardvärden i vanliga fall.
  • Undantag bör vara sällsynta och meningsfulla.
  • Fånga bara sådant som du kan hantera.

Guard-kontroll eller undantag

Snabb kontroll: När bör du föredra guard-kontroller framför att kasta undantag?

Repetition

Repetition: Använd guard-kontroller för vanliga ogiltiga indata, kasta undantag för exceptionella tillstånd och hantera dem med try/catch när återställning är möjlig.

Gratis att börja

Lär dig C# med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
93
Lektioner
346

Vanliga frågor

Är lektionen ”Enkel diagnostik: undantag kontra guard-kontroller” gratis?

Ja – hela texten till ”Enkel diagnostik: undantag kontra guard-kontroller” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C# Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C# Academy innehåller totalt 3 lektioner.

Vad lär jag mig i ”Enkel diagnostik: undantag kontra guard-kontroller”?

Använd guard-kontroller för förväntade ogiltiga indata, kasta undantag för exceptionella tillstånd och använd try/catch för att hantera fel smidigt. Ni övar på C# Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig C# Academy?

Du behöver inga förkunskaper. Utbildningen i C# Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 3.

Hur lång tid tar lektionen ”Enkel diagnostik: undantag kontra guard-kontroller”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här C# Academy-lektionen?

Ja. Varje C# Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. if/else, switch (klassisk) och loopar: for, while, do, foreach
  2. break/continue, goto (undvik), scope och undantag kontra guard-kontroller
  3. Enkel diagnostik: undantag kontra guard-kontroller
← Tillbaka till C# Academy