52 lines
2.1 KiB
C#
52 lines
2.1 KiB
C#
using System;
|
|
|
|
namespace Exercises_C_Sharp.E32_Exceptions
|
|
{
|
|
class Exercise_9
|
|
{
|
|
public static void Start()
|
|
{
|
|
//2. Erstellen Sie ein neue Instanz der Klasse Thing. Lassen Sie dabei den Anwender den Namen des Objekts angeben. Fangen Sie die möglichen Exceptions ab und wenn eine solche fliegt, lassen Sie den Anwender die Eingabe nochmal machen, bis das Objekt erstellt werden kann.
|
|
|
|
//Code START
|
|
|
|
while(true)
|
|
{
|
|
try
|
|
{
|
|
Console.WriteLine("Bitte geben Sie einen Namen ein:");
|
|
Thing t = new(Console.ReadLine() ?? "");
|
|
break;
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
Console.WriteLine("Es ist ein Fehler aufgetreten:");
|
|
Console.WriteLine(ex.ToString());
|
|
}
|
|
}
|
|
|
|
//Code ENDE
|
|
}
|
|
}
|
|
class Thing
|
|
{
|
|
private string name = string.Empty;
|
|
public Thing(string name)
|
|
{
|
|
//1. Diese Klasse representiert irgendeine Sache. Dieser Sache muss im Konstruktor ein Name übergeben werden. Für den Namen gilt: Er muss mindestens 5 Zeichen besitzen, keiner der Zeichen darf eine Zahl sein und natürlich darf der Übergabewert auch nicht null sein. Sollte ein falscher Wert übergeben werden, so schmeißen Sie eine jeweilige Exception mit einer Erläuterung, um was es sich genau handelt. Sollte alles passen, speichern Sie den Wert in die Variable 'Name'.
|
|
|
|
//Code START
|
|
if(name == null) throw new ArgumentNullException("Leider war der Name NULL");
|
|
if(name.Length < 5) throw new FormatException("Leider war die länge von 5 nicht erreicht.");
|
|
|
|
if(name.Any(k => char.IsDigit(k))) throw new Exception("Leider war eine Stelle eine Zahl");
|
|
|
|
foreach(var element in name)
|
|
if(int.TryParse(element.ToString(), out _))
|
|
throw new Exception("Leider war eine Stelle eine Zahl");
|
|
|
|
this.name = name;
|
|
//Code ENDE
|
|
}
|
|
}
|
|
} |