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”.
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;
}
}
}