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.
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
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.
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
- if/else, switch (klassisk), løkker: for, while, do, foreach
- break/continue; goto (undgå); scope; exceptions kontra guard checks
- Enkel diagnosticering: exceptions kontra guard checks