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.
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
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.
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
- if/else, switch (klassisk) och loopar: for, while, do, foreach
- break/continue, goto (undvik), scope och undantag kontra guard-kontroller
- Enkel diagnostik: undantag kontra guard-kontroller