Gå til indholdet

N172 Egne exceptions (1)

Du skal i en ny konsolapplikation skabe en lokal SmartToUpper-funktion, som modtager en streng som argument, og returnerer strengen med små bogstaver bortset fra det første bogstav som skal være stort. Altså “mikkel” bliver til “Mikkel” og “MAtHiAs” bliver til “Mathias”.

static string SmartToUpper(string? tekst) {
    // mangler kode        
}

Hvis argumentet tekst er null skal du smide en ny ApplicationException med fejlen “tekst må ikke være null” og hvis argmentet tekst er “” skal du smide en ny ApplicationException med fejlen “tekst må ikke være tom”.

Prøv metoden af i en try/catch så du fanger fejlen:

try
{
    Console.WriteLine(SmartToUpper("mikkel"));
    Console.WriteLine(SmartToUpper("mAtHiAs"));

    // prøv også 
    Console.WriteLine(SmartToUpper(""));
    // eller
    Console.WriteLine(SmartToUpper(null));

}
catch (Exception ex)
{
    Console.WriteLine("Der er sket en fejl: " + ex.Message);                
}

PS Man kan godt argumentere at man i stedet for at smide en ApplicationException kunne smide en ArgumentException. Prøv evt det.

Klik for at se et forslag til en løsning
try
{
    Console.WriteLine(SmartToUpper("mikkel"));
    Console.WriteLine(SmartToUpper("mAtHiAs"));

    // prøv også
    Console.WriteLine(SmartToUpper(""));
    // eller
    Console.WriteLine(SmartToUpper(null));
}
catch (Exception ex)
{
    Console.WriteLine("Der er sket en fejl: " + ex.Message);
}

static string SmartToUpper(string? tekst)
{
    if (tekst == null)
    {
        throw new ApplicationException("tekst må ikke være null");
    }

    if (tekst == "")
    {
        throw new ApplicationException("tekst må ikke være tom");
    }

    string tmp = tekst.ToLower();
    string resultat = tmp.Substring(0, 1).ToUpper() + tmp.Substring(1);
    return resultat;
}