Gå til indholdet

N172 Egne exceptions (1)

Du skal i Program-klassen i en ny konsol-applikation skabe en statisk SmartToUpper-metode, 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
using System;

namespace Fejl
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            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);
            }
        }

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