59 lines
2.2 KiB
C#
59 lines
2.2 KiB
C#
using System;
|
|
|
|
namespace Exercises_C_Sharp.E32_Exceptions
|
|
{
|
|
class Exercise_6
|
|
{
|
|
public static void Start()
|
|
{
|
|
while(true)
|
|
{
|
|
try
|
|
{
|
|
Console.WriteLine("Das Ergebnis: " + Method(Console.ReadLine() ?? "", Console.ReadLine() ?? ""));
|
|
}
|
|
catch(ArgumentOutOfRangeException ex)
|
|
{
|
|
Console.WriteLine("Leider wurde ein falscher Wert eingegeben: " + ex.Message);
|
|
}
|
|
catch(FormatException ex)
|
|
{
|
|
Console.WriteLine("Leider hatte die Eingabe das falsche Format: " + ex.Message);
|
|
}
|
|
catch(DivideByZeroException ex)
|
|
{
|
|
Console.WriteLine("Die Eingabe führte zu einer Teilung durch 0: " + ex.Message);
|
|
}
|
|
Console.WriteLine("Bitte versuchen Sie es noch einmal...");
|
|
}
|
|
}
|
|
static int Method(string input1, string input2)
|
|
{
|
|
//Sie bekommen von einer anderen Methode die Eingabe des Nutzers. Sie wollen zwei Zahlen durcheinander teilen. Dabei darf keine Zahl größer als 10.000 sein. Führen Sie die Berechnungen durch und schmeißen Sie jeweils eine Exception, wenn die Bedingungen nicht erfüllt sind. Erläutern Sie in den Exceptions auch das konkrete Problem.
|
|
|
|
//Code START
|
|
|
|
int in1;
|
|
if(!int.TryParse(input1, out in1))
|
|
throw new FormatException("Leider ist der erste Übergabewert kein Integer.");
|
|
|
|
int in2;
|
|
if(!int.TryParse(input2, out in2))
|
|
throw new FormatException("Leider ist der zweite Übergabewert kein Integer.");
|
|
|
|
if(in1 > 10000)
|
|
throw new ArgumentOutOfRangeException("Leider ist die erste Zahl größer als 10.000.");
|
|
|
|
if(in2 > 10000)
|
|
throw new ArgumentOutOfRangeException("Leider ist die zweite Zahl größer als 10.000.");
|
|
|
|
|
|
if(in2 == 0)
|
|
throw new DivideByZeroException("Leider ist die zweite Zahl 0. Und eine Teilung durch 0 ist so nicht möglich.");
|
|
|
|
return in1 / in2;
|
|
//CODE ENDE
|
|
}
|
|
|
|
}
|
|
} |